在python中:
>>> "\xc4\xe3".decode("gbk").encode("utf-8")
'\xe4\xbd\xa0'
>>> "\xc4\xe3".decode("gbk")
u'\u4f60'
我们可以得出两个结论:
1.\xc4\xe3 in gbk encode=\xe4\xbd\xa0(utf-8格式)
2.\xc4\xe3 in gbk encode=\x4f\x60以unicode表示(或在ucs-2中)
在R中:
^{pr2}$现在,结论1是正确的,它在python中与R
结论2是一个难题,
gbk encode中的\xc4\xe3究竟是什么??unicode格式。
在python中它是u'\u4f60',在R中它是ff fe60 4f
是平等的吗?哪一个是正确的?它们都对吗?在
在python中,
\uxxxx
符号引用Unicode代码点,而不是这些代码点的任何编码。在UCS-2、UTF-16、UTF-8都是能够以字节形式捕获代码点的编码,这些字节适合存储在文件中,用于在网络上传输等等
\u4f60
代码点的R表示包括UTF-16Byte Order Mark,或BOM。它指示所选择的字节顺序,其中0xFFFE表示little endian。Python也包含它,当你编码到UTF-16时:big-endian等价物是0xFEFF。您可以在python中显式地编码为},以避免包含BOM,因为您已经做出了明确的选择:
^{pr2}$utf-16be
或{您确实应该阅读joelspolsky Unicode的文章,以及Python Unicode HOWTO,以便更全面地理解Unicode和编码之间的区别。在
相关问题 更多 >
编程相关推荐