字符编码转换
不论在python2上还是python3的环境当中,转换步骤都是一样的。我们都要以unicode为中心,来回转换。 gb2312是gbk的以前的版本。gbk使我们windows默认的字符集。
步骤:
1.先告诉unicode我们本身的编码集。
decode('本身的编码集')
2.此时我们的编码集就转换成了unicode。
3.我们在从unicode转换成我们想要转换的编码。
encode('要转换的编码集')
例子:
我们分别在2.6和3.5上来实验编码问题
vim 2.6
#!/usr/bin/python.bak
a = '你好'
print a
[root@a ~]# chmod +x 2.6
[root@a ~]# ./2.6
File "./2.6", line 2
SyntaxError: Non-ASCII character 'xe4' in file ./2.6 on line 2, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
我们发现执行报错了,因为2.6中默认的编码为ascii编码,不支持中文。要想支持中文。
我们需要在文件中声明我们文件的编码为-*-coding:utf-8 -*-。
#!/usr/bin/python.bak
#-*-coding:utf-8 -*-
a = '你好'
print a
[root@a ~]# ./2.6
你好
现在我们2.6就支持中文了。
现在我们把编码从utf8转换成gbk
import sys
a = '你好'
print a
a_gbk = a.decode('utf-8').encode('gbk')
print a_gbk
执行
[root@a ~]# ./2.6
你好
ţº
我们发现gbk的你好乱码了。这是因为我们xshell的编码我们调整为了utf-8。我们调整为"默认"就是gbk。在执行
[root@a ~]# ./2.6
浣.ソ
你好
这就发现我们已经将字符转换成了gbk了。
3.5当中的编码
python3.5当中默认的编码为utf-8.
我们转换成gbk 直接encodeing('gbk') 就可以了