0

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

  1. (XML) 消息使用给定的字符集或不发送到 web 服务。
  2. Webservice 获取消息并将其存储在一个字符串中,该字符串是 UTF-16 并且不会对任何字符进行任何更改。
  3. 制作另一个字符串,给它发送消息时最初给定的字符集。比方说 ISO-8859-1。
  4. 比较两个字符串。如果它们相等:消息没有字符集中不存在的任何字符。如果不相等:在这种情况下,假设原始消息中有一个欧元符号“€” ,然后给出一个例外。

我的问题:有没有更好的方法来做到这一点?

4

1 回答 1

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 库处理这个问题。

于 2013-10-24T10:32:04.880 回答