将值编码为UTF 32

时间:2017-02-06 17:41:19

标签: utf utf-32

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

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

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

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 Release 24

1 个答案:

答案 0 :(得分:0)

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

00 02 A5 80

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

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

00 00 FE FF

虽然 是UTF-32BE物料清单,但以UTF-32BE编码的UTF-16BE物料清单。

所以,要么:

  • EditPad错误地进行了双重编码。
  • EditPad正在保存为UTF-16,尽管您告诉它保存为UTF-32,然后您的od输出错误地将UTF-16输入表示为UTF-32。