java - 当字符串未采用 UTF-8 编码时抛出异常

标签 java xml

我有一个方法,其中输入属性之一是 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/

按照以下说明进行操作(从该链接复制粘贴):

如何使用

  1. 构造 org.mozilla.universalchardet.UniversalDetector 的实例。
  2. 通过调用 UniversalDetector.handleData() 将一些数据(通常为数千字节)馈送到检测器。
  3. 通过调用 UniversalDetector.dataEnd() 通知检测器数据结束。
  4. 通过调用 UniversalDetector.getDetectedCharset() 获取检测到的编码名称。
  5. 在重用检测器实例之前,请不要忘记调用 UniversalDetector.reset()

关于java - 当字符串未采用 UTF-8 编码时抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13585897/

相关文章:

java 和 jsp_session expired_redirect

java - OpenJPA 在没有 persistence.xml 的代码中创建 EntityManager,具有属性

java - 如何实现 java 生产级 RabbitMQ 消费者

java - 需要通过行检测来检测 RecyclerView 上的点击和触摸事件

Java 方法适用于 1.5 但不适用于 1.6

c# - 尝试反序列化 xml 文件时出现异常

jquery - 如何读取和显示HTML页面中的XML内容?

java - Controller 在浏览器中打开文件而不是下载它

java - JsonPath可以用来验证多个路径吗?

xml - 使用 Xpath 将 XML 节点提取到 Hive 表中