python2.7.x的字符串编码到底什么鬼?(中文和英文的处理)
2016-05-05 02:48
871 查看
一直以来我其实一直对python的编码弄得非常晕,能正常编码,也能处理一些情况。但是始终不明白有些问题究竟为何出,原因是什么,为什么要这样用。
今天晚上正好好好研究了一番解答了自己心中的困惑。
Q:python2.7.x里面的中文表示到底是什么鬼?
A:直接来看看
这个x打印值相信熟悉编码的盆友都知道,这是utf-8编码。也就是说python2.7.x 在默认情况下将中文默认转到了utf-8编码。
这里type(x)得到结果是str
Q:python2.7.x里的unicode究竟什么鬼?
A:还是通过例子来看看
在2.7.x在中,u写在字符串前面将会将一个字符串转成unicode对象。
Q:python2.7.x中unicode可以和str相加吗?
A:还是来看例子
熟悉的报错,可见在python2.7.x中,unicode中文和utf8中文是不能相加的因为是不同类型。
Q:那么英文字符串可以相加吗?
A:可以。具体就不掩饰了大家可以自己试试。而且最终得到的结果会被转成全unicode
这两个库在对无论utf8还是unicode对象进行中文编码的时候,都会将内容转成unicode再编码。最后你拿到结果decode之后就变成了unicode对象,想要再拿到utf8对象,就需要再encode一次才可以了。
一不注意就踩坑。
今天晚上正好好好研究了一番解答了自己心中的困惑。
Q:python2.7.x里面的中文表示到底是什么鬼?
A:直接来看看
In [23]: x = '好不好喝都要喝' In [24]: x Out[24]: '\xe5\xa5\xbd\xe4\xb8\x8d\xe5\xa5\xbd\xe5\x96\x9d\xe9\x83\xbd\xe8\xa6\x81\xe5\x96\x9d'
这个x打印值相信熟悉编码的盆友都知道,这是utf-8编码。也就是说python2.7.x 在默认情况下将中文默认转到了utf-8编码。
这里type(x)得到结果是str
Q:python2.7.x里的unicode究竟什么鬼?
A:还是通过例子来看看
In [16]: x = u'好不好喝就很好喝' In [17]: type(x) Out[17]: unicode
在2.7.x在中,u写在字符串前面将会将一个字符串转成unicode对象。
Q:python2.7.x中unicode可以和str相加吗?
A:还是来看例子
In [62]: z = '好不好喝' In [63]: x = u'好不好喝都要喝' In [64]: z+x --------------------------------------------------------------------------- UnicodeDecodeError Traceback (most recent call last) <ipython-input-64-f964ff206363> in <module>() ----> 1 z+x UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 0: ordinal not in range(128)
熟悉的报错,可见在python2.7.x中,unicode中文和utf8中文是不能相加的因为是不同类型。
Q:那么英文字符串可以相加吗?
A:可以。具体就不掩饰了大家可以自己试试。而且最终得到的结果会被转成全unicode
这两个库在对无论utf8还是unicode对象进行中文编码的时候,都会将内容转成unicode再编码。最后你拿到结果decode之后就变成了unicode对象,想要再拿到utf8对象,就需要再encode一次才可以了。
一不注意就踩坑。
相关文章推荐
- python 大小写转换函数
- 【Python】【辅助程序】练手小程序:记录外网动态IP地址
- Python 迭代器和生成器
- 关于python的for语句
- libpython2.7.so.1.0 cannot open的解决方法
- 使用Python判断质数(素数)的简单方法讲解
- Python环境下搭建属于自己的pip源的教程
- Python使用Paramiko模块编写脚本进行远程服务器操作
- Python中内建函数的简单用法说明
- Python核心编程-第五章
- python 错误、异常
- python 测试与调试(test)
- Python爬虫: 抓取One网页上的每日一话和图
- python的json模块,针对decimal类型直接dumps报错
- Python文件读写基础
- Python 类与元类的深度挖掘 II
- Python-量化分析之路
- python(二)拾遗
- [Python]经典教程
- python2 type()函数 isinstance()函数