`
姜太公
  • 浏览: 74883 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

Python2.x中字符串编码和解码

阅读更多

<!----><!----> <!---->

Python2.x 中,没有字节的概念(Python3中出新了bytes),只有两种字符串:表示 str unicode 。使用引号定义字符串时,默认定义成一个str字符串。加前缀u表示这是一个Unicode字符串。

 

可以把 str 的单位看做一个字节,把 unicode 的单位看作一个字符。在交互命令界面下

 

>>> t = '你好'
>>> t
'\xc4\xe3\xba\xc3'
>>> t[0]
'\xc4'
>>> print t[0]

>>> t = u'你好'
>>> t
u'\u4f60\u597d'
>>> t[0]
u'\u4f60'
>>> print t[0]
你
>>>

 所以处理中文时最好使用Unicode字符串,可以对每个汉字进行处理。

 

还要注意,上面把'你好'作为str表示时,它的值是

'\xc4\xe3\xba\xc3'

这其实是汉字你好的gb编码,因为我用的windows xp系统的默认编码是gbk,所以在控制台里输入的汉字也是gbk编码的。

 

Python提供了encode()和decode()这两个方法供我们进行编码转换。由于Python内部是Unicode表示的,所以这两个方法都和Unicode有关。

 

s.decode()是把str字符串s解码成Unicode字符串,注意如果s不是str字符串(那么它就是Unicode字符串),调用这个方法可能 会出错。使用这个函数,你要指定s的编码方式,比如我要把上面的’你好‘转换成Unicode编码,需要这样

>>> '你好'.decode('gbk')
u'\u4f60\u597d'
>>>

 结果返回一个Unicode表示的’你好‘

s.encode()把Unicode字符串编码成另外一种编码的ascii字符串。s这时候必须是一个Unicode字符串,否则可能 出错。

>>> u'你好'.encode('gbk')
'\xc4\xe3\xba\xc3'
>>>

 结果返回一个str字符串表示的’你好‘。

利用encode和decode就可以实现任意编码之间转换。

 

代码文件中的字符串默认是和代码文件本身的编码一致。文件test.py,编码为gbk

#-*-coding:gbk-*-
t = '你好'
x = u'你好'

 那么t的编码是gbk,而x的编码是Unicode,x的编码与文件编码无关。

 

4
0
分享到:
评论

相关推荐

    Python2.x中文乱码问题解决方法

    在 Python 3 中,字符串对象是 Unicode 编码,不需要像 Python 2 那样手动编码和解码。这种改变使得处理多语言文本变得更加方便和直观。 总的来说,解决 Python 2.x 中的中文乱码问题,关键在于明确文件编码,确保...

    Python2.X/Python3.X中urllib库区别讲解

    - Python 2.X:用于将字典类型的数据编码为URL查询字符串。 - Python 3.X:已被urllib.parse.urlencode替代。 5. **urllib.quote**: - Python 2.X:用于URL编码单个字符串。 - Python 3.X:已移至urllib....

    python面试题Python2.x和Python3.x的区别

    - **编码和解码**:Python3.x默认使用UTF-8编码,这对于处理多语言文本非常重要。 - **比较运算符**:去除了`&lt;&gt;`符号,统一使用`!=`作为不等于运算符。 - **除法运算**:在Python3.x中,整数除法会返回浮点数结果。...

    Python超详细入门到精通自学视频课程-4-字符串输入.ev4.rar

    8. **字符串编码与解码** Python默认使用Unicode编码,`encode()`方法将字符串转换为字节,`decode()`方法将字节还原为字符串。例如: ```python encoded = str1.encode('utf-8') # 编码为UTF-8 decoded = ...

    python3.x 将byte转成字符串的方法

    由于Python2中的`str`和`unicode`类型在Python3中已经被整合为字符串类型,并引入了字节串类型,所以在处理Python2遗留代码时,需要额外注意编码转换的细节。 6. 在实际应用中,字节串到字符串的转换可能涉及到网络...

    python 2.7.14 参考文档

    7. **内置模块更新**:Python 2.7.14 更新了许多内置模块,如 `ssl` 模块提供了 SSL/TLS 加密通信支持,`json` 模块用于 JSON 数据编码和解码,以及 `argparse` 用于命令行选项、参数和子命令解析。 8. **多线程与...

    Day 4 用Python处理文件.pdf

    字符串编码与解码 - **编码**:将 Unicode 字符串转换为特定编码(如 UTF-8 或 GBK)的字节流。 - **解码**:将特定编码的字节流转换回 Unicode 字符串。 示例代码: ```python # 创建一个 Unicode 字符串 s = ...

    python-2.6.9.tgz

    - Unicode处理在2.6.9中稍有不同,需要显式地处理编码和解码,而在Python 3中,字符串默认为Unicode。 2. **内置函数与库**: - Python 2.6.9包含丰富的标准库,如os、sys、math、collections等,这些库为各种...

    python基础系列教程-Python3.x标准模块库目录.docx

    1. **string**:这个模块包含了一系列预定义的字符串常量和函数,方便进行字符串操作,如创建模板或检查字符串属性。 2. **re**:正则表达式模块,提供了正则匹配、查找、替换等高级字符串操作功能,是处理复杂文本...

    一个简单的库,用于将HealthLevel7(HL7)版本2.x的消息解析为Python对象 .zip

    1. **消息解析器**:库会提供一个解析器,可以接受HL7 v2.x格式的字符串或文件,并将其拆分为可操作的Python对象。这些对象可能包含嵌套的字典和列表,代表HL7消息中的段、字段和子字段。 2. **模型映射**:为了...

    Python2.x中str与unicode相关问题的解决方法

    在Python2.x中,处理字符串(str)与Unicode编码时常会遇到问题,因为Python2.x并未默认使用Unicode作为内部字符串表示。这个问题主要涉及到字符编码、解码、Unicode转换以及默认编码(defaultencoding)等问题。 ...

    python考试题目.docx

    7. **字符串编码和解码**:Python的`encode()`方法用于将字符串编码成字节,`decode()`用于将字节解码回字符串。`'董'.encode()`和`ord('董')`都是合法操作,而`'董'.decode()`会报错,因为字符串已经是Unicode编码...

    Python2.7解决中文的方法

    - 在Python 2.x中,字符串分为字节字符串(str)和Unicode字符串(unicode)。字节字符串是基于特定编码的,而Unicode字符串则包含了所有字符的通用表示。 - 当处理中文字符串时,需要明确指定编码方式,例如`str....

    python打印变换特定字符

    utf8_str = str.encode('utf-8') # 将Unicode字符串编码为UTF-8 original_str = utf8_str.decode('utf-8') # 将UTF-8编码的字符串解码回Unicode ``` 4. **字符串方法** Python的字符串类提供了丰富的内置方法,...

    python2712.rar

    10. **字符串和文本处理**:Python 2.7 中的字符串默认为 ASCII 编码,而在 Python 3.x 中已改为 Unicode。不过,`unicode()` 函数和 `str()` 函数在处理字符串时依然有用。 11. **文件操作**:Python 提供了简单...

    python-2.7.rar

    其中,字符串在2.7中区分单引号和双引号,但2.7不支持Python 3中的字符串字面量语法。 3. **控制结构**:包括条件语句(if-else)、循环(for,while)、异常处理(try-except-finally)等,这些构成了程序逻辑的...

    Python 快速提取一串字符中的中文.zip

    1. **Unicode与编码**:在Python中,可以使用`encode()`方法将字符串转化为特定编码(如UTF-8),`decode()`方法则用于解码。中文字符通常以UTF-8编码存储,因此在读取或写入包含中文的文件时,需要指定正确的编码。...

    解决Python下json.loads()中文字符出错的问题

    这是因为Python 2.7中字符串默认使用ASCII编码,而Unicode编码的字符串前会加上前缀`u`。 #### 解决方案 对于Python 2.7来说,将Unicode编码的中文字符转换回原始中文字符的操作非常简单,只需要直接`print`即可。...

Global site tag (gtag.js) - Google Analytics