一篇文章助你理解Python2中字符串编码问题

简介: 前几天给大家介绍了unicode编码和utf-8编码的理论知识,没来得及上车的小伙伴们可以戳这篇文章:浅谈unicode编码和utf-8编码的关系。下面在Python2环境中进行代码演示,分别Windows和Linux操作系统下进行演示,以加深对字符串编码的理解。

前几天给大家介绍了unicode编码和utf-8编码的理论知识没来得及上车的小伙伴们可以戳这篇文章浅谈unicode编码和utf-8编码的关系。下面在Python2环境中进行代码演示分别Windows和Linux操作系统下进行演示以加深对字符串编码的理解。

ä¸ç¯æç« å©ä½ ç解Python2中å­ç¬¦ä¸²ç¼ç é®é¢

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

ä¸ç¯æç« å©ä½ ç解Python2中å­ç¬¦ä¸²ç¼ç é®é¢

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

ä¸ç¯æç« å©ä½ ç解Python2中å­ç¬¦ä¸²ç¼ç é®é¢

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

ä¸ç¯æç« å©ä½ ç解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编码如下图所示。

ä¸ç¯æç« å©ä½ ç解Python2中å­ç¬¦ä¸²ç¼ç é®é¢

当中文字符串使用ASCII编码进行解码之后本身就报错了后边的encode(‘utf-8’)根本就没有执行到。
关于Python2中字符串编码的问题就先介绍到这里了相信大家应该有了一个初步的认识了下一篇文章将介绍Python3中字符串编码的问题。

相关文章
|
16天前
|
Python
1167: 分离字符串(PYTHON)
1167: 分离字符串(PYTHON)
|
1月前
|
大数据 Python
使用Python查找字符串中包含的多个元素
本文介绍了Python中查找字符串子串的方法,从基础的`in`关键字到使用循环和条件判断处理多个子串,再到利用正则表达式`re模块`进行复杂模式匹配。文中通过实例展示了如何提取用户信息字符串中的用户名、邮箱和电话号码,并提出了优化策略,如预编译正则表达式和使用生成器处理大数据。
20 1
|
1月前
|
数据挖掘 开发者 Python
Python:字符串判断子串
Python:字符串判断子串
|
1月前
|
程序员 数据安全/隐私保护 Python
Python:翻转字符串
Python:翻转字符串
|
1月前
|
索引 Python
Python系列(14)—— 字符串运算符
Python系列(14)—— 字符串运算符
|
1月前
|
存储 自然语言处理 数据挖掘
Python:计算字符串中每个单词出现的次数
Python:计算字符串中每个单词出现的次数
|
1月前
|
存储 移动开发 算法
Python怎么将图片转换成base64编码
Python怎么将图片转换成base64编码
27 0
|
8天前
|
Python
python学习-函数模块,数据结构,字符串和列表(下)
python学习-函数模块,数据结构,字符串和列表
49 0
|
9天前
|
数据采集 Python
python学习9-字符串
python学习9-字符串
|
16天前
|
Java 索引 Python
Python标准数据类型-字符串常用方法(下)
Python标准数据类型-字符串常用方法(下)
21 1