Ore*_*ail 1 python unicode encoding utf-8 latin1
我想做这个:
取这个utf-8字符串的字节:
访视频
在latin-1中对这些字节进行编码并打印结果:
访视é¢"
我如何在Python中执行此操作?
# -*- coding: utf-8
s = u'???'.encode('latin-1')
Run Code Online (Sandbox Code Playgroud)
导致此异常:
s = u'???'.encode('latin-1')
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 0-2: ordinal not in range(256)
Run Code Online (Sandbox Code Playgroud)
你要求做的事实上是不可能的.您不能将这些字符编码为Latin-1,因为这些字符在Latin-1中不存在.
要获得所需的输出,您需要将UTF-8字节解码,就像它们是Latin-1一样.像这样:
s = u'???'.encode('utf-8').decode('latin-1')
Run Code Online (Sandbox Code Playgroud)
然而,您所需的输出并不像实际的Latin-1,因为拉丁语-1,字符\x86和\x91是不可打印的,所以你会得到这样的:
è®¿è§ é¢
Run Code Online (Sandbox Code Playgroud)
(请注意,中间的空格代替†,而‘末尾的空格;这些实际上是不可见的控制字符,而不是空格.)
看起来你想要一个Latin-1超集,可能是Windows代码页1252.在这种情况下你真正想要的是:
s = u'???'.encode('utf-8').decode('cp1252')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6045 次 |
| 最近记录: |