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') 。
最终问题搞定。