在Python中将cp850映射到unicode

2024-04-26 23:30:19 发布

您现在位置:Python中文网/ 问答频道 /正文

在python中可以将cp850映射到unicode吗?你可能会问,为什么我要这么做:我得到了一个使用cp850的文本文件,我必须用它创建一个数据库。所以有一些字符用于文本格式化,例如∮(CP850:0xDB)用作换行符。因此,我首先将文件转换为UTF-8,以使其更易于人类阅读。下一步是填充数据库并将特殊字符更改为合适的控制字符(\n、\t…)。但是转换过程(当然)会导致其数值表示形式发生变化,例如从0xDB到0x2588的换行符。有解决办法吗?还是我必须自己绘制代码?在

谢谢


Tags: 文件文本格式数据库过程unicode人类字符形式
1条回答
网友
1楼 · 发布于 2024-04-26 23:30:19

Is it possible to map cp850 to unicode in python?

当然,只需解码数据的字节(Python 3示例):

>>> s=b'\xcdABCDEF\xcd\xdbHIJKLMNOP'.decode('cp850')
>>> s
'═ABCDEF═█HIJKLMNOP'

do i have to map the codes myself?

只是你需要翻译的字节。对于Unicode字符串,有一个方便的.translate方法,它接受映射字典:

^{pr2}$

完成后,将输出编码为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)

相关问题 更多 >