【问题标题】:Problem reading File using UTF-8 encoding in java在 java 中使用 UTF-8 编码读取文件时出现问题
【发布时间】:2010-10-18 06:20:15
【问题描述】:

当我在 JEditorPane 中读取整个 XML 文件时,除了 BOM 字符外,一切正常。我在文件开头得到一个 BOM 字符(一个点)。如果我删除点并保存文件,它将保存为 ANSI。在记事本++ 中,它显示同一文件的(ANSI 为 UTF-8)编码。如果我不删除点 XML 解析器将无法解析文档。你能帮我解决这个问题吗????谢谢。

【问题讨论】:

  • 哪个解析器?您是否在 JEditorPane 上定义了内容类型?

标签: java swing io


【解决方案1】:

如果您的 XML 文件仅包含 ASCII 字符,那么它将是有效的 ASCII/ANSI 以及有效的 UTF8,因此不必担心 Notepad++ 会将文件识别为 ANSI。

虽然您可以为 UTF8 使用 BOM,但不鼓励这样做,因为它会破坏许多 Unix 程序,您真的不应该这样做。

【讨论】:

    【解决方案2】:

    继续使用不带 BOM 的 UTF-8。 试试 Editplus 进入菜单 文档->文件编码->更改文件编码 然后选择 UTF-8。

    【讨论】:

      【解决方案3】:

      使用java 命令的-D 选项,设置系统属性file.encoding,如answer 中所建议的那样。

      java -Dfile.encoding=utf-8
      

      【讨论】:

        【解决方案4】:

        问题:

        utf-8 不使用 BOM,因此大多数程序不期望它并且无法解析/处理它。据我所知,只有一些微软程序插入它以更快地检测 utf-8 编码。

        解决方案:

        • 删除 BOM,没有人需要它。
        • 不要使用带有非标准编码的错误编辑器。 (=> 我的看法)

        【讨论】:

          猜你喜欢
          • 2012-02-11
          • 1970-01-01
          • 2015-11-04
          • 2019-02-25
          • 1970-01-01
          • 1970-01-01
          • 2011-03-20
          • 2016-08-14
          • 2011-06-20
          相关资源
          最近更新 更多