我正在尝试测试我必须在学校上课的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答案 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物料清单。
所以,要么:
od
输出错误地将UTF-16输入表示为UTF-32。