最近预备用python来计算文本内容的频繁项集,因为电脑为MacBook,因此使用Xcode运行python程序,再python成功连接数据库后,跑出来的内容中中文为乱码,python中文编码历来是个比较麻烦的问题,在这里我记录下我遇到的问题与解决方法:
我的思路很简单:
1、Xcode下python中文编码哪种编码模式可以正常显示
2、目前的中文是什么编码?
3、如何转换为Xcode可以正常显示的中文编码
带着这个思路,开启了我中文编码解决之路:
1、Python
也有两种字符串类型,str
与unicode,测试在Xcode中这两种类型是否可以正常显示,代码如下:
# -*- coding: utf-8 -*-
import
string
s
= '关关雎鸠'
u =
u'关关雎鸠'
print s
print u
运行结果如下:
关关雎鸠
Traceback (most recent call last):
File "main.py", line 6, in
print u
UnicodeEncodeError: 'ascii' codec can't encode characters in
position 0-3: ordinal not in range(128)
说明unicode在Xcode下不能正常显示,而str可以正常显示,那么我们将所有的中文都有这种形式展现即可
2、了解目前系统的编码方式
#
-*- coding: utf-8 -*-
import sys
reload(sys)
sys.getdefaultencoding()
运行结果如下:
ascii
系统是ascii编码方式
3、如何进行编码转换,两个 Python 字符串类型间可以用 encode / decode 方法转换:
decode:为从str转换成unicode
encode:为从unicode转换到str
刚刚分析了将unicode转换为str就可以正常在Xcode下正常显示了,试验如下:
# -*- coding: utf-8 -*-
import
string
s
= '关关雎鸠'
print s
u =
u'关关雎鸠'
print u.encode('utf-8')
运行结果如下:
关关雎鸠
关关雎鸠
4、当如果你的中文编码已经是utf-8时,仍非正常输出,你可以使用一下万能的方式:
# -*- coding: utf-8 -*-
import
string
s
= '关关雎鸠'
s.decode('utf-8').encode('utf-8')
运行结果如下:
关关雎鸠