角色中的角色是什么?用Java验证Web服务

时间:2013-10-24 09:22:58

标签: java web-services character-encoding

目前我想以下一种方式实现字符集验证:

  1. (XML)消息使用give characterset或none。发送到Web服务。
  2. Webservice获取消息并将其存储在String中,该字符串为UTF-16,不会对任何字符进行任何更改。
  3. 创建另一个String,为其提供发送消息时最初给出的字符集。我们说ISO-8859-1。
  4. 比较两个字符串。如果它们相等:消息没有字符集中不存在的任何字符。如果不相等:在这种情况下,因为假设原始邮件中有欧元符号'€',则提供例外。
  5. 我的问题:有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

CharsetEncoder e=Charset.forName("ISO-8859-1").newEncoder();
// tell that we want an exception
e.onUnmappableCharacter(CodingErrorAction.REPORT);
// this will pass
e.encode(CharBuffer.wrap("hello iso latin 1"));
// this will throw
e.encode(CharBuffer.wrap("\u20ac is a non-latin-1 character"));

CharsetEncoder e=Charset.forName("ISO-8859-1").newEncoder();
// this will pass
if(!e.canEncode("hello iso latin 1"))
  throw new CharacterCodingException();
// this will throw
if(!e.canEncode("\u20ac is a non-latin-1 character"))
  throw new CharacterCodingException();

但你应该问问自己为什么需要这个。 XML文件可以使用&#…;实体表示任何unicode字符。让XML库处理这个问题。