博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python2.7.x的字符串编码到底什么鬼?(中文和英文的处理)
阅读量:4979 次
发布时间:2019-06-12

本文共 1160 字,大约阅读时间需要 3 分钟。

一直以来我其实一直对python的编码弄得非常晕,能正常编码,也能处理一些情况。但是始终不明白有些问题究竟为何出,原因是什么,为什么要这样用。

今天晚上正好好好研究了一番解答了自己心中的困惑。

 

Q:python2.7.x里面的中文表示到底是什么鬼?

A:直接来看看

In [23]: x = '好不好喝都要喝'In [24]: xOut[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)
in
()----> 1 z+xUnicodeDecodeError: '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一次才可以了。

一不注意就踩坑。

 

转载于:https://www.cnblogs.com/piperck/p/5460416.html

你可能感兴趣的文章
Foreach用法
查看>>
python的学习记录
查看>>
5G时代,万物互联,物联网开发必备——《从芯片到云端:Python物联网全栈开发实践(刘凯著)》内附pdf地址...
查看>>
工作笔记1
查看>>
JavaScript-02
查看>>
数据库 约束 分离 备份 还原 附加
查看>>
Linux流量监控工具 - iftop (最全面的iftop教程)
查看>>
poj 2546 Circular Area
查看>>
第三周作业
查看>>
Java基础篇—JDK、JRE、JVM
查看>>
JVM ——知识总结(面试)
查看>>
WEBAPP组件化时代, Web Components
查看>>
04.CSS基础知识
查看>>
14-本章总结
查看>>
jquery中对动态生成的标签不会响应click事件(转)
查看>>
JDK配置顺序
查看>>
docker+zookeeper+mesos+marathon集群
查看>>
PowerShell将运行结果保存为文件
查看>>
NET VBCSCompiler.exe占用100%,造成项目卡顿的的解决方法
查看>>
js中浅拷贝和深拷贝以及深拷贝的实现
查看>>