在python中:
u'\u3053\n'
是utf-16吗?
我并不知道所有的unicode/编码的东西,但是这类东西正在我的数据集中出现,
就像我有a=u'\u3053\n'
。
print
给出一个异常和
解码是个例外。
a.encode("utf-16") > '\xff\xfeS0\n\x00'
a.encode("utf-8") > '\xe3\x81\x93\n'
print a.encode("utf-8") > πüô
print a.encode("utf-16") > ■S0
怎么回事?
Tags:
它是一个unicode字符,似乎无法在终端编码中显示。
print
尝试在终端的编码中对unicode对象进行编码,如果无法做到这一点,则会出现异常。在可以显示utf-8的终端上,您可以得到:
您的终端似乎无法显示utf-8,否则至少
print a.encode("utf-8")
行应该生成正确的字符。字符U+3053“平假名字母KO”。
UTF-16二进制格式开头的
\xff\xfe
位是编码字节顺序标记(U+FEFF),然后“S0”是\x5e\x30
,然后是原始字符串的\n
。(每个字符的字节都是“反向的”,因为它使用的是小尾数UTF-16编码。)UTF-8表单用三个字节表示同一个平假名字符,位模式为documented here。
现在,至于你是否真的应该把它放在你的数据集中。。。这些数据是从哪里来的?里面有平假名字符合理吗?
你问:
答案是否定的:它是unicode,不是任何特定的编码。utf-16是一种编码。
要有效地将Unicode字符串打印到终端,您需要了解终端愿意接受并能够显示的编码。例如,我膝上型电脑上的Terminal.app设置为UTF-8,字体丰富,因此:
(来源:aleax.it)
…平假名字母显示正确。在Linux工作站上,我有一个终端程序,它会一直重置为Latin-1,这样它就会破坏一些与您类似的东西——我可以将它设置为utf-8,但它的字体中没有大量的字形,因此它会显示一些无用的占位符字形。
相关问题 更多 >
编程相关推荐