python中的编码问题

来源:互联网 发布:在淘宝上搜血滴子 编辑:程序博客网 时间:2024/05/14 12:06

系统:win7*64位,python:2.7


1.如果文件中有中文字(注释也算),文件开头要有这么一句

# -*- coding:utf-8 -*-

或者

#coding=utf-8

2.输出结果像这样的乱码时:

\xd2\xb5\xc4\xc8\xed\xbc\xfe

这显然是unicode,我们把输出结果.encode一下

实例:

示例:

import sysprint 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 jsonprint json.dumps(dict, encoding="UTF-8", ensure_ascii=False)

4.读取的字符串就是unicode

a='\u773c'
print a.decode("unicode-escape")

这样,就可以将a代表的汉字找出来

结果是"眼",注意与u'眼'的区别

a=u'眼'aprint type(a)
结果是一个unicode:显示结果是 u'\u773c'

print a
结果是汉字 '眼'

5.创建文件夹是乱码?

# -*- coding:utf-8 -*-import sys ,ostype = 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) #很好


0 0
原创粉丝点击