首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Python将cp850映射到unicode

用Python将cp850映射到unicode
EN

Stack Overflow用户
提问于 2013-10-22 17:49:42
回答 1查看 2.6K关注 0票数 1

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

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-24 15:40:24

在python中可以将cp850映射到unicode吗?

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

代码语言:javascript
复制
>>> s=b'\xcdABCDEF\xcd\xdbHIJKLMNOP'.decode('cp850')
>>> s
'═ABCDEF═█HIJKLMNOP'

我必须自己绘制密码吗?

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

代码语言:javascript
复制
>>> D={}
>>> D['\u2588'] = '\n'   # Make translation entry in dictionary
>>> s.translate(D)
'═ABCDEF═\nHIJKLMNOP'

完成后,用UTF-8对输出进行编码:

代码语言:javascript
复制
>>> s.translate(D).encode('utf8')
b'\xe2\x95\x90ABCDEF\xe2\x95\x90\nHIJKLMNOP'

关键是在读取数据时对Unicode进行解码,完成Unicode中的所有处理,然后在将数据发送到存储时将其编码回数据。例如,到一个文件:

代码语言:javascript
复制
with open('out.txt','w',encoding='utf8') as f:
    f.write(s)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19524883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档