我有一个方法,其中输入属性之一是 String xml。我只想创建对该 xml 编码的控制。如果任何字符是 UTF-8 以外的其他编码,则会抛出错误。
您能告诉我如何创建和测试它的最简单方法吗?
我用过这样的东西:
String xml = IOUtils.toString(new FileInputStream("c:/encoding.xml"));
Document doc = builder.parse(IOUtils.toInputStream(xml, "UTF-8"));
添加了 Ľ,Š,Ť,Ž,ľ,š,ť,ž 等字母并将其保存为 cp1250 文件。
但没有错误。
我做错了什么?
最佳答案
这不能在 Java 中本地完成。文件只是一串字节,你可以随意解释它们,Java 默认情况下无法添加含义。我建议使用这个库(不,我没有写它):
http://code.google.com/p/juniversalchardet/
按照以下说明进行操作(从该链接复制粘贴):
如何使用
- 构造
org.mozilla.universalchardet.UniversalDetector
的实例。 - 通过调用
UniversalDetector.handleData()
将一些数据(通常为数千字节)馈送到检测器。 - 通过调用
UniversalDetector.dataEnd()
通知检测器数据结束。 - 通过调用
UniversalDetector.getDetectedCharset()
获取检测到的编码名称。 - 在重用检测器实例之前,请不要忘记调用
UniversalDetector.reset()
。
关于java - 当字符串未采用 UTF-8 编码时抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13585897/