标签归档:GB2312

PYTHON中UTF-8向GB2312编码转换的问题一解

最近用PYTHON写程序时,遇到了编码的问题,经过一段时间的困扰,终于弄明白并且顺利解决了,要不说实践出真知。首先说说编码的事,在计算机中存在着多种编码类型,比如utf-8、unicode、ascii、gb2312等等,这几种比较常见,所以说拿这几种类型说事。

博主遇到的问题是:在EXCEL中读取数据,然后将数据用POST方法提交到某网站,相当于自动填写表格。从EXCEL读取的数字型数据都能正常提交到目标网站,但是汉字就出现了乱码,经过仔细研究终于发现了问题所在。

首先,我的脚本开头写了# -*- coding: utf-8 -*-,也就是指定了PYTHON脚本的编码是utf-8格式的,从EXCEL中读取的数据应该也是utf-8格式的,目标网站的网页是gb2312编码的,估计问题就出在这编码上了,数字之所以没出问题,是因为数字用utf-8和gb2312编码是一样的,汉字就不一样了,以utf-8格式的汉字向gb2312编码的网页上提交数据,汉字就成乱码了。

于是就将这些utf-8的数据转换成gb2312格式的:str=str. encode(“gb2312”),然后再提交,汉字果然都正常提交到目标网站了。PYTHON的编码问题比较头疼,在PYTHON IDE编辑器(windows版)里面默认是ascii编码,可以使用sys.getdefaultencoding()来获取当前的编码类型,也可以通过sys.setdefaultencoding(‘utf-8’)来改变默认的编码类型。把这些编码的问题搞明白了,PYTHON里面就没有乱码的问题了。