我想这样做:
获取这个 utf-8 字符串的字节:
访问视频
用 latin-1 编码这些字节并打印结果:
访视频
我如何在 Python 中执行此操作?
# -*- coding: utf-8
s = u'访视频'.encode('latin-1')
导致此异常:
s = u'访视频'.encode('latin-1')
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 0-2: ordinal not in range(256)
请您参考如下方法:
您要执行的操作实际上是不可能的。您不能将这些字符编码为 Latin-1,因为这些字符在 Latin-1 中不存在。
要获得所需的输出,您需要解码 UTF-8 字节就好像它们是Latin-1 一样。像这样:
s = u'访视频'.encode('utf-8').decode('latin-1')
但是,您想要的输出看起来不像实际的 Latin-1,因为在 Latin-1 中,字符 \x86 和 \x91 是不可打印的,所以你会得到这个:
è®¿è§ é¢
(请注意中间的空格代替了 †,最后缺少了 ';这些实际上是不可见的控制字符,而不是空格。)
看起来您想要一个 Latin-1 超集,可能是 Windows 代码页 1252。在这种情况下,您真正想要的是:
s = u'访视频'.encode('utf-8').decode('cp1252')
