8st*_*ve8 6 python unicode encoding decoding
在python中:
u'\u3053\n'
Run Code Online (Sandbox Code Playgroud)
是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
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?
它是一个unicode字符,似乎在您的终端编码中无法显示.print尝试在终端的编码中对unicode对象进行编码,如果无法完成,则会出现异常.
在可以显示utf-8的终端上,您将获得:
>>> print u'\u3053'
?
Run Code Online (Sandbox Code Playgroud)
您的终端似乎无法显示utf-8,否则至少该print a.encode("utf-8")行应该生成正确的字符.
你问:
U '\ u3053\N'
是utf-16吗?
答案是否定的:它是unicode,而不是任何特定的编码.utf-16是一种编码.
要有效地将Unicode字符串打印到终端,您需要找出该终端愿意接受和能够显示的编码.例如,我的笔记本电脑上的Terminal.app设置为UTF-8并且具有丰富的字体,因此:
截图http://www.aleax.it/Picture%203.png
......平假名字母显示正确.在Linux工作站上,我有一个终端程序,它会一直重置为Latin-1,所以它会像你的一样乱码 - 我可以将它设置为utf-8,但字体中没有大量的字形,所以它会显示一些无用的占位符字形.
| 归档时间: |
|
| 查看次数: |
43319 次 |
| 最近记录: |