是否可以在 python 中将 cp850 映射到 unicode?
当然,只需解码数据的字节(Python 3 示例):
>>> s=b'\xcdABCDEF\xcd\xdbHIJKLMNOP'.decode('cp850')
>>> s
'═ABCDEF═█HIJKLMNOP'
我必须自己映射代码吗?
只是您需要翻译的字节。Unicode 字符串有一个方便的.translate
方法,它采用映射字典:
>>> D={}
>>> D['\u2588'] = '\n' # Make translation entry in dictionary
>>> s.translate(D)
'═ABCDEF═\nHIJKLMNOP'
完成后,将输出编码为 UTF-8:
>>> s.translate(D).encode('utf8')
b'\xe2\x95\x90ABCDEF\xe2\x95\x90\nHIJKLMNOP'
关键是在读入数据时解码为Unicode,在Unicode中进行所有处理,然后在将数据发送到存储时编码回数据。例如,到一个文件:
with open('out.txt','w',encoding='utf8') as f:
f.write(s)