【问题标题】:invalid byte 2 of 2-byte UTF-8 sequence2 字节 UTF-8 序列的无效字节 2
【发布时间】:2011-01-26 03:34:55
【问题描述】:

我正在尝试使用 <?version = 1.0, encoding = UTF-8> 解析 XML 文件 但遇到了错误消息invalid byte 2 of 2-byte UTF-8 sequence。有谁知道是什么导致了这个问题?

【问题讨论】:

  • 你是如何解析xml文件的?

标签: java xml encoding


【解决方案1】:

解析器设置为 UTF-8,即使文件以其他方式编码,或者文件被声明为使用 UTF-8 但实际上没有。

【讨论】:

    【解决方案2】:

    最常见的原因是输入 ISO-8859-x(Latin-x,如 Latin-1),但解析器认为它正在获取 UTF-8。某些 Latin-1 字符序列(带有重音或变音符号的两个连续字符)形成了无效的 UTF-8,特别是基于第一个字节,第二个字节具有意外的高位。

    当某些进程使用 Latin-1 转储出 XML,但要么忘记输出 XML 声明时,这很容易发生(在这种情况下,XML 解析器必须默认为 UTF-8,根据 XML 规范),或者声称它是UTF-8,即使它不是。

    【讨论】:

    • 关于如何解决这个问题的任何建议?我在使用 3rd 方库 XMLTask 定义 ant 任务时遇到了这个问题。
    • 那很难;否则通常会为特定编码显式创建一个 InputStreamReader,然后将其提供给 XML 解析器。但不确定如何处理 Ant……当然,如果可能的话,除了修复 XML 文件本身。
    • 我发现了问题 - 在我的一个 xml 文件中,我有一个变音符号(ä、ö、ü),当我将 xml 文件转换为不同的格式时,它不知何故搞砸了。一旦我删除了那个变音符号,它就解决了。
    • 对 - 这些字符是单字节的 Latin-1 (ISO-8859-1) 和 UTF-8 的 2 个字节。所以内容是 Latin-1 的,但有些地方声称它会是 UTF-8。
    【解决方案3】:

    您可以尝试将 String.getBytes() 使用的默认字符编码更改为 utf-8。使用 VM 选项 -Dfile.encoding=utf-8。

    【讨论】:

      【解决方案4】:

      我遇到了同样的问题。我的问题是我用 jdom 和 FileWriter(xmlFile) 创建了一个新的 XML 文件。 FileWriter 无法创建 UTF-8 文件。 而是使用 FileOutputStream(xmlFile) 解决了它。

      【讨论】:

        【解决方案5】:

        对于那些仍然犯这种错误的人。

        由于使用了 UTF-8,请检查您的 xml 文档中是否有任何拉丁字母左右: 我有同样的问题,原因是我有这个:

        <n:name>Åke Jógvan Øyvind</n:name>
        

        希望对你有帮助

        【讨论】:

          【解决方案6】:

          在尝试将我的 .xml 文件导入我的 java 工具时,我也遇到了同样的问题。我为此找到了一个很好的解决方案: 1. 使用 Notepad++ 打开 .xml 文件,然后将 .xml 文件保存为 .rtf 文件。然后在写字板应用程序中打开此文件。 2、将.rtf文件保存为.txt文件,然后用记事本打开,再次保存为.xml文件。在记事本中保存时,在弹出窗口的末尾附近,确保选择“编码:UTF-8”选项。 它对我有用,希望对你也有用。

          【讨论】:

            【解决方案7】:

            在这种情况下,切换输入的编码可能会有所帮助:

            XMLEventReader eventReader =
                                        inputFactory.createXMLEventReader(in, 
                                                "utf-8"
                                                //"windows-1251"
                                        );
            

            【讨论】:

              猜你喜欢
              • 2012-10-16
              • 2013-08-14
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-06-15
              • 2018-12-10
              • 1970-01-01
              • 2012-07-04
              相关资源
              最近更新 更多