系统:win7*64位,python:2.7
1.如果文件中有中文字(注释也算),文件开头要有这么一句
# -*- coding:utf-8 -*-
或者
#coding=utf-8
2.输出结果像这样的乱码时:
\xd2\xb5\xc4\xc8\xed\xbc\xfe
这显然是unicode,我们把输出结果.encode一下
实例:
示例:
import sys
print sys.argv
结果
['C:\\\xce\xd2\xb5\xc4\xc8\xed\xbc\xfe\\\xd1\xa7\xcf\xb0\xb0\xec\xb9\xab\\PyCharm 2016.2.3\\helpers\\pydev\\pydevconsole.py', '49343', '49344']
列表的第一个元素是乱码的(其实不叫乱码,应该是编码显示问题吧)
用encode解码
print sys.argv.encode("utf-8")
命令无效,其实根据pycharm中输入sys.argv后补全项里没有encode,就知道
(encode命令不能针对list)
那么把元素取出来encode,试试
print sys.argv[0].encode("utf-8")
运行结果:
C:\我的软件\学习办公\PyCharm 2016.2.3\helpers\pydev\pydevconsole.py
完美解决
3.字典(dict类型)编码解决.打印出来是uniode形式?
dict = {"asdf": "我们的python学习"}
print dict
#dict是要转换的字典
import json
print json.dumps(dict, encoding="UTF-8", ensure_ascii=False)
4.读取的字符串就是unicode
a='\u773c'
这样,就可以将a代表的汉字找出来print a.decode("unicode-escape")
结果是"眼",注意与u'眼'的区别
结果是一个unicode:显示结果是 u'\u773c'a=u'眼' a print type(a)
结果是汉字 '眼'print a
5.创建文件夹是乱码?
# -*- coding:utf-8 -*- import sys ,os type = sys.getfilesystemencoding() myname = '中国' # myname = 'dff' # print myname.decode('UTF-8').encode(type) #直接 print(myname) 在console中能正常显示,通过py文件则会乱码 print(myname) mydir = myname.decode('UTF-8').encode(type) #生成不乱码的字符串 # os.mkdir("dfj") # os.mkdir("中国") #会乱码 os.mkdir(mydir) #很好