Skip to main content
 首页 » 编程设计

python之在 Python 中将 utf-8 转换为 latin-1

2025年05月04日15zdz8207

我想这样做:

获取这个 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')