python_编码
2016-07-10 16:33
471 查看
终极大招
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 三个
注:win 在添加中文路径时,将路径字符串转换为GBK
在系统控制台输出时中文,转为Unicode或gbk,而utf-8为乱码
在sublime的控制台输出编码与文件编码类型一样
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的控制台输出编码与文件编码类型一样
相关文章推荐
- 模拟xcopy的函数
- python中的map、filter、reduce函数
- 【转】Python Anaconda简介及安装
- py,pyc,pyo的区别
- pip 升级包 技巧 一键升级
- win10 安装 Python 和 pip 详解
- Ubuntu-14.04. sh .py腳本双击無法執行问题的解决方法
- ElementTree排序问题
- python学习笔记
- Python第一天
- 计划doing.....
- Python调用Linux c库:ctypes初学体验
- Python_基础_01
- Python_基本命令_01
- py批量图片抓取
- Centos6.2 安装Python2.7.x 版本
- py属性方法和函数
- python操作文件写入内容
- py_web---github代码库使用
- day 5 【错题】日志模块碰到的奇妙问题