【发布时间】:2013-01-17 12:28:05
【问题描述】:
我的问题如下。我正在阅读一个 XML 文件,其文本节点部分包含 UTF-8 版本的打开和关闭双引号。文本被提取,缩短为 3999 字节并放入新的 XML 格式,然后保存为文件。
虽然 Notepad++ 在输入文件中正确显示了这两个符号,但输出文件包含无效的 utf-8 字符,即使 Notepad++ 也无法显示。
开头的双引号打印正确,但结尾的双引号被毁容。
使用十六进制编辑器,我发现代码单元以某种方式更改
E2 80 9D
在输入文件中
E2 80 3F
在输出文件中。 我正在使用 sax-parser 进行 xml 解析。
是否有任何已知的错误可能导致这种行为?
【问题讨论】:
-
您能否发布一个显示此行为的最小(但完整)程序,最好使用示例 XML 文件(可能托管在其他地方,因此我们可以获得确切的二进制数据) ?
-
好吧,看来文件被解码为 Windows-1252。这可以解释结果,因为在 Windows-1252 中解码
e2 80 9d输出为e2 80 3f,其中3f是?,9d的替换字符在 Windows-1252 中未分配。