在python中可以将cp850映射到unicode吗?您可能会问,我为什么要这样做:我使用cp850获得了一个文本文件,我必须用它创建一个数据库。因此,有一些字符用于文本格式化,例如,CP850(█:0xDB)用作换行符。因此,我首先将文件转换为UTF-8,以使其更易于人类阅读。下一步是填充数据库并将特殊字符更改为适当的控件-chars (\n,\t,.)。但是,转换过程(当然)会导致其数值表示发生变化,例如,从0xDB到0x2588的换行。有办法解决这个问题吗?还是我必须自己绘制密码?
谢谢
发布于 2013-10-24 15:40:24
在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)https://stackoverflow.com/questions/19524883
复制相似问题