您的位置:首页 > 编程语言 > Python开发

python_编码

2016-07-10 16:33 471 查看
终极大招
import sys
reload(sys)
sys.setdefaultencoding('utf-8')


str和unicode相连接问题的原由
Python2当中str其实是bytes,多字节字符串(多字节的字符串本质上是C里面的char *,没有任何编码限制,也不假定任何编码);unicode是unicode字符串。两者连接的时候,会把str转换成unicode再相连,但是转换时默认使用ascii编码,就会出现UnicodeDecodeError,'中文' + u'abc'一秒复现。

Python 里面的编码和解码也就是 unicode 和 str 这两种形式的相互转化。编码是 unicode -> str,相反的,解码就
是 str -> unicode

更改默认编码为utf-8,原始为ascii

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

Unicode 可以转 utf-8 和gbk
s_utf = s_uicode.encode('utf-8')

utf-8 和gbk 转Unicode
s_unicode = s_utf_8.encode('utf-8')

中文
Unicode 一个
Gbk 两个
Utf-8 三个

>>> gbk = 'asdf五'                 //当前默认的是gbk
>>> gbk
'asdf\xce\xe5'
>>> print gbk
asdf五
>>> len(gbk)
6
>>> unicode = gbk.decode('gbk')
>>> unicode
u'asdf\u4e94'
>>> print unicode
asdf五
>>> len(unicode)
5
>>> utf_8 = unicode.encode('utf-8')
>>> utf_8
'asdf\xe4\xba\x94'
>>> print utf_8
asdf五
>>> len(utf_8)
7


注:win 在添加中文路径时,将路径字符串转换为GBK
在系统控制台输出时中文,转为Unicode或gbk,而utf-8为乱码
在sublime的控制台输出编码与文件编码类型一样
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  py