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识别不了,所以失败。

浙公网安备 33010602011771号