0

我正在尝试测试我必须为学校的课程编写的 Unicode 32 解码器程序。我正在寻找一种能够准确地将 UTF 32 字节写入文件的解决方案,以便我可以尝试对它们进行解码。

我一直在尝试开发一种方法来测试它,而不必将 Unicode 编程为 UTF32 编码器(这意味着我也必须测试它)。我一直在使用我在网上找到的一个名为 editpad ( https://www.editpadlite.com/ ) 的程序,它可以让我用 utf32 进行编码。然后我可以在上面测试我的程序。

但是,我会尝试在该程序中编码 U+2A580(unicode 代码点),然后在 linux 中使用终端命令

od -tx1 file.txt

查看它,并将结果视为:

00 00 fe ff 00 00 d8 69 00 00 dd 80

除了 BOM 之外,这对我来说毫无意义。我只是错误地理解了 UTF32 吗?还是有错误..我希望 UTF32 值类似于 02 a5 80

编辑:我的操作系统是 Linux,特别是 Fedora。Fedora 第 24 版

4

1 回答 1

0

您是正确的,Unicode 代码点U+2A580在 UTF-32BE 中被编码为以下字节序列:

00 02 A5 80

您实际看到的是代码点首先以 UTF-16 编码,然后两个 UTF-16 代理代码单元(0xD869、0xDD80)分别以 UTF-32BE 编码。

发生这种情况的另一个迹象是第一个字节序列:

00 00 FE FF

虽然这UTF-32BE BOM,但它也是以 UTF-32BE 编码的 UTF-16BE BOM。

所以,要么:

  • EditPad 错误地进行双重编码。
  • 尽管您告诉 Edi​​tPad 保存为 UTF-32,但 EditPad 正在保存为 UTF-16,然后您的od输出将 UTF-16 输入错误地表示为 UTF-32。
于 2017-02-09T23:27:13.590 回答