我已经发布了一个 xml-utf16 问题 ,如果我打开 xml 文件,Emacs 会显示汉字, 但现在我想了解为什么会出现这种问题。也许,如果我有更深入的了解,我可以更好地应对这类问题。
具体来说,我得到了一个用 utf16 编码的 xml 文件。我用emacs(记事本,firefox)从我的windows xp PC打开文件,并显示了图(A)(firefox说:格式不正确)。显然,该文件是使用编码 utf16 导出的。(B) 显示十六进制版本。(C) 显示用 emacs (revert-buffer-with-coding-system) 转换为 utf-8 后的 xml 文件。我还使用 Perl 将 xml-utf16 文件转换为 utf8。结果显示在 (D) 中。
我的问题:
- 显然,xml 文件是使用编码 utf-16le 导出的。据我了解,utf-16 是一种比 utf-8 更简单、更古老的编码。为什么 utf-8 不理解这种编码?为什么编辑器显示汉字?
- 如果我想阅读 xml 文件的内容,建议使用 emacs 进行转换。由于“@”,我得到的不是很可读(C)。我认为编码问题是一项常见的任务,像 emacs 这样的编辑器可以应付。我错了还是这个问题(插入“@”)是由于 xml 文件的错误规范?为什么字符之间的十六进制版本有一点?
- 我从互联网上下载了一个将 utf16 转换为 utf8 的 Perl 代码。如果我将原始 xml 文件转换为 utf-8,我得到了图 (D)。好在 firefox 显示新 xml 文件的树结构。这不是使用 emacs (D) 的情况。整个内容写在一行中(第一行除外)。实际上,原始文件不包含 CR 或 LF。如果我想查看考虑树结构的 utf16/utf8 xml 文件,我的工作似乎是编写 Perl 或 Python 代码,通过插入 CR/LF 或使用适当的 Perl 来考虑树结构/Python 包,不是吗?
- 为什么导出数据并生成正在研究的 xml 文件的导出器在被编辑器打开时不考虑 LF/CR 以获得可读的 xml 文件?这是为了避免大文件吗?
- 关于 utf16 存在争议(https://softwareengineering.stackexchange.com/questions/102205/should-utf-16-be-considered-harmful)。使用 utf16 显然存在问题,这个问题是大约 4 年前提出的。为什么程序员仍然使用 utf16?我错过了什么吗?(我想建议我的数据交付者使用 utf8)。
谢谢你的耐心。