欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python中文编码的问题

程序员文章站 2022-04-11 17:27:50
...

python是个好东西,“活好话少”。最近在用python处理mapinfo的midmif文件时遇到了一个中文编码的问题。网上搜索研究了半天,终于得解。备忘以记之。

本想通过Python遍历midmif数据,对于满足条件的数据,update某字段属性值为某些中文,可是在python2中会报错。

python2中报UnicodeDecodeError: ‘gbk’ codec can’t decode bytes in position 2-3: illegal multibyte sequence的错。

网上搜索了下,未找到合适的解决办法,最终研究了下python中文文字编码的问题,找到了答案: Python2系统默认使用ascii编码来编码(python3中就是unicode编码了,python2这点似乎比较坑).py文件,由于ascii不能编码中文,所以会报语法错误。

解决办法就是,在py文件头添加# coding:utf-8,告诉python系统使用utf-8编码来编码源代码文件,这样py文件中就可以输入中文。 虽然这样可以正常运行脚本,但是输出的结果,在gbk环境中,用文本工具打开显示乱码。 这是因为,虽然# coding:utf-8约定在python用utf-8编码来编码文件,但是在写入中文时,我想用GBK编码来写入,所以结果在gbk字符集的环境中打开依旧是乱码。

这个时候不但要告诉python2,不但要用utf-8进行defcode,还要告诉python,我要用gbk进行encode,用gbk编码写入结果数据。这样再打开结果文件,就能正常显示中文了。

所以,解决这个问题有两个关键的点: 

1、文件头添加# coding:utf-8; 

2、将中文进行utf-f解码后,在用gbk编码,即: character = '临'.decode('utf-8').encode('gbk') 。 

最终问题搞定。