目前我想通过以下方式实现字符集验证:
- (XML) 消息使用给定的字符集或不发送到 web 服务。
- Webservice 获取消息并将其存储在一个字符串中,该字符串是 UTF-16 并且不会对任何字符进行任何更改。
- 制作另一个字符串,给它发送消息时最初给定的字符集。比方说 ISO-8859-1。
- 比较两个字符串。如果它们相等:消息没有字符集中不存在的任何字符。如果不相等:在这种情况下,假设原始消息中有一个欧元符号“€” ,然后给出一个例外。
我的问题:有没有更好的方法来做到这一点?
目前我想通过以下方式实现字符集验证:
我的问题:有没有更好的方法来做到这一点?
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 库处理这个问题。