默认情况下,print(chr(195)) 在位置 195 处显示 unicode 字符 ("Ã") 如何打印出现在代码页1251 中的 chr(195),即。“Г” 我试过:print(chr(195).decode('cp1252')) 和各种 .encode 方法。
3 回答
2
由于您不能将“原始”值存储0xC3在字符串中(如果您这样做了,则不应该有 - 原始二进制“未解析”数据应该是字节数组):从原始字节数组转换的正确方法确实是.decode('cp1251'):
>>> print (b'\xc3'.decode('cp1251'))
Г
bytes但是,如果您已经在字符串中得到它,那么最简单的方法是首先使用 1-on-1“编码”Latin-1从字符串转换为对象:
str = 'Ãamma'
print (bytes(str.encode('latin1')).decode('cp1251'))
>>> Гamma
于 2018-11-04T23:41:43.263 回答
2
在 Python 3 中,chr(n)返回一个 Unicode 字符串,它只能被编码。用于bytes创建可以解码的字节字符串:
>>> bytes([195])
b'\xc3'
>>> bytes([195]).decode('cp1251')
'Г'
>>> bytes([195,196,197])
b'\xc3\xc4\xc5'
>>> bytes([195,196,197]).decode('cp1251')
'ГДЕ'
于 2018-11-05T13:46:01.060 回答
1
你可以使用 urllib
print urllib.quote_plus(str.encode('cp1251'))
另请记住,如果您使用的是国际字符串,请确保在您正在解析的字符串中包含 u 前缀。
str = u"whateverhere"
更改为删除downvote?
于 2018-11-04T23:33:58.323 回答