python中的编码问题

系统: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'
print a.decode("unicode-escape")
 
  

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

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

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

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) #很好


你可能感兴趣的:(windows下的,python)