python编码问题

1:#coding:utf-8//设置python文件的编码格式,一般为utf-8

str = u'杨磊'//指定为Uncode编码

Unicode是字符集,而Utf-8是编码格式,是unicode的实现方式之一,

unicode只是一中字符集,字符和二进制的对应,但是并没有规则怎么存储,或者说给你一个3个字节,你并不能判断这代表1个字符合适三个字符。

2,乱码

    1 terminal用于显示字符的编码:将一个用utf8/gbk编码的字节流通过terminal指定的编码,去查找对应的字符显示出来。

    2 sys.stdout.encoding,默认就是locale的编码,print会用sys.stdout.encoding去encode()成字节流,交给terminal显示。所以locale需要与terminal一致,才能正确print打印出中文。   

    3 #coding:utf-8     #.py文件是什么编码就需要告诉python用什么编码去读取这个.py文件。

    得到结论:

    print uname.encode('gbk')//print 一个gbk编码的字符串,而print会用sys.stdout.encoding去编码这个字符,然后terminal去显示。相等于会对print后面的字符串会再做一次编码.其目的我想是统一字符编码

就像是windows默认是gbk,他就会对字符串做一次gbk编码,linux是utf-8.

   比如你再window下 print name.decode('utf-8').encode('utf-8'),会出现乱码但是再linux下不会。

3:举例说明遇到的困难

f = open(r'H:\python抓包\test\pageCode.txt', 'w')

IOError: [Errno 2] No such file or directory: 'H:\\python\xe6\x8a\x93\xe5\x8c\x85\\test\\pageCode.txt'

改正:
f = open(r'H:\python抓包\test\pageCode.txt'.decode('utf-8'), 'w')
原因:路径中含有汉字,再windows下运行出现找不到文件或目录,是因为utf-8被gdb识别不了,所以失败。

posted @ 2018-07-15 19:29  WorldsCollide  阅读(43)  评论(0)    收藏  举报