词条信息

admin
admin
超级管理员
词条创建者 发短消息   

相关词条

热门词条

更多>>
什么是端口?到底是做什么的呢?
端口一般指两种,一种是硬件比如路由器或者交换机的插网线的端口,一种是软件的逻辑的概念,比如http的80端口!...
7种进阶方法让你快速测试端口连通性
Ping是Windows、Linux和Unix系统下的一个检查网络连通性的命令工具,对于大部分互联网用户来说很...
电脑开机,总需要按F1,是什么原因造成的?
一.主板掉电这个说法是行业内的叫法了,一般是主板的CMOS电池没电了导致的。也是最常见的一种提示你按F1的提示...
社保降费对个人有什么影响?
下调城镇职工基本养老保险单位缴费比例是政府给企业发的一个大红包,特别是对于企业来说是一个利好,但是对个人来说有...
车辆“出险”对下年保费的影响,到底有多大?
【出险对交强险的影响】【出险对商业险的影响】车辆“出险”对下年保费的影响,到底有多大?这里有必要先提下车险第三...

精选图集

更多>>
简易百科旧版 >>所属分类 >> Python   

Python2中字符串编码问题

标签: Python2 字符串编码

顶[0] 发表评论(0) 编辑词条

下面在Python2环境中进行代码演示,分别Windows和Linux操作系统下进行演示,以加深对字符串编码的理解。


1、首先在Windows操作系统下的Python2环境中进行演示,我们都知道Python2中的编码问题经常出现,需要通过编码(encode)和解码(decode)进行实现。通过cmd进入命令行窗口,然后输入两个字符串’abc’和u’abc’,如下图所示。需要注意的是这两个字符串的编码格式是不一样的,前者是string,后者是unicode。接下来对其进行编码,指定编码为utf-8,可以发现两个都正常显示,没有报错。



当字符串变为中文的时候,尔后对其再次进行编码演示的时候,如下图所示,可以看到前者有报错产生,而后者没有报错。这个报错在Python2中经常出现,所以需要特别注意,Python字符串在内存中它是通过unicode来进行编码的。此时定义的str1它传递过来的是utf-8编码,非unicode编码,使用encode()函数的前提是待转换的字符串编码为unicode编码。所以可以看到str1会报错,而str2并没有报错。在Windows下字符串的编码格式是GB2312编码,在Linux下字符串的编码格式是utf-8编码。如果想要将str1顺利的转换为utf-8编码的话,则需要先将str1进行解码成unicode编码,再进行编码即可,此时得到的结果同str2转换的结果是一致的。



2、现在在Linux操作系统下的Python2环境中进行演示,使用一样的字符串,结果最后是一样的,但是过程有些不同,如下图所示。



在Windows下字符串的编码格式是GB2312编码,在Linux下字符串的编码格式是utf-8编码。所以当输入有中文的字符串的时候,直接编码为utf-8会报错;通过gb2312编码进行解码也会报错。只要通过utf-8编码进行解码,然后再通过utf-8进行编码才可以正确的输出结果。


有个地方大家可能会觉得很奇怪,就是一开始str1.encode(‘utf-8’),表面上看上去str1已经是unicode编码了,之后进行编码,按说没有什么问题,可是为什么还是会报错呢?其实主要原因还是在于str1并不是真正的解码成了unicode格式。其实str1.encode(‘utf-8’),它默认的会进行一步解码,但是其decode()的过程调用的是默认的编码格式,而这个默认的编码格式却是ASCII编码,如下图所示。



当中文字符串使用ASCII编码进行解码之后,本身就报错了,后边的encode(‘utf-8’)根本就没有执行到。

 

 

附件列表


按字母顺序浏览:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

→我们致力于为广大网民解决所遇到的各种电脑技术问题
 如果您认为本词条还有待完善,请 编辑词条

上一篇Python3中字符串编码问题
下一篇在Windows上如何安装和彻底卸载Adobe Flash Player

0
1. 本站部分内容来自互联网,如有任何版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
2. 本站内容仅供参考,如果您需要解决具体问题,建议您咨询相关领域专业人士。
3. 如果您没有找到需要的百科词条,您可以到百科问答提问或创建词条,等待高手解答。

关于本词条的提问

查看全部/我要提问>>