<!----><!---->
<!---->
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的编码与文件编码无关。
分享到:
相关推荐
在 Python 3 中,字符串对象是 Unicode 编码,不需要像 Python 2 那样手动编码和解码。这种改变使得处理多语言文本变得更加方便和直观。 总的来说,解决 Python 2.x 中的中文乱码问题,关键在于明确文件编码,确保...
- Python 2.X:用于将字典类型的数据编码为URL查询字符串。 - Python 3.X:已被urllib.parse.urlencode替代。 5. **urllib.quote**: - Python 2.X:用于URL编码单个字符串。 - Python 3.X:已移至urllib....
- **编码和解码**:Python3.x默认使用UTF-8编码,这对于处理多语言文本非常重要。 - **比较运算符**:去除了`<>`符号,统一使用`!=`作为不等于运算符。 - **除法运算**:在Python3.x中,整数除法会返回浮点数结果。...
8. **字符串编码与解码** Python默认使用Unicode编码,`encode()`方法将字符串转换为字节,`decode()`方法将字节还原为字符串。例如: ```python encoded = str1.encode('utf-8') # 编码为UTF-8 decoded = ...
由于Python2中的`str`和`unicode`类型在Python3中已经被整合为字符串类型,并引入了字节串类型,所以在处理Python2遗留代码时,需要额外注意编码转换的细节。 6. 在实际应用中,字节串到字符串的转换可能涉及到网络...
7. **内置模块更新**:Python 2.7.14 更新了许多内置模块,如 `ssl` 模块提供了 SSL/TLS 加密通信支持,`json` 模块用于 JSON 数据编码和解码,以及 `argparse` 用于命令行选项、参数和子命令解析。 8. **多线程与...
字符串编码与解码 - **编码**:将 Unicode 字符串转换为特定编码(如 UTF-8 或 GBK)的字节流。 - **解码**:将特定编码的字节流转换回 Unicode 字符串。 示例代码: ```python # 创建一个 Unicode 字符串 s = ...
- Unicode处理在2.6.9中稍有不同,需要显式地处理编码和解码,而在Python 3中,字符串默认为Unicode。 2. **内置函数与库**: - Python 2.6.9包含丰富的标准库,如os、sys、math、collections等,这些库为各种...
1. **string**:这个模块包含了一系列预定义的字符串常量和函数,方便进行字符串操作,如创建模板或检查字符串属性。 2. **re**:正则表达式模块,提供了正则匹配、查找、替换等高级字符串操作功能,是处理复杂文本...
1. **消息解析器**:库会提供一个解析器,可以接受HL7 v2.x格式的字符串或文件,并将其拆分为可操作的Python对象。这些对象可能包含嵌套的字典和列表,代表HL7消息中的段、字段和子字段。 2. **模型映射**:为了...
在Python2.x中,处理字符串(str)与Unicode编码时常会遇到问题,因为Python2.x并未默认使用Unicode作为内部字符串表示。这个问题主要涉及到字符编码、解码、Unicode转换以及默认编码(defaultencoding)等问题。 ...
7. **字符串编码和解码**:Python的`encode()`方法用于将字符串编码成字节,`decode()`用于将字节解码回字符串。`'董'.encode()`和`ord('董')`都是合法操作,而`'董'.decode()`会报错,因为字符串已经是Unicode编码...
- 在Python 2.x中,字符串分为字节字符串(str)和Unicode字符串(unicode)。字节字符串是基于特定编码的,而Unicode字符串则包含了所有字符的通用表示。 - 当处理中文字符串时,需要明确指定编码方式,例如`str....
utf8_str = str.encode('utf-8') # 将Unicode字符串编码为UTF-8 original_str = utf8_str.decode('utf-8') # 将UTF-8编码的字符串解码回Unicode ``` 4. **字符串方法** Python的字符串类提供了丰富的内置方法,...
10. **字符串和文本处理**:Python 2.7 中的字符串默认为 ASCII 编码,而在 Python 3.x 中已改为 Unicode。不过,`unicode()` 函数和 `str()` 函数在处理字符串时依然有用。 11. **文件操作**:Python 提供了简单...
其中,字符串在2.7中区分单引号和双引号,但2.7不支持Python 3中的字符串字面量语法。 3. **控制结构**:包括条件语句(if-else)、循环(for,while)、异常处理(try-except-finally)等,这些构成了程序逻辑的...
1. **Unicode与编码**:在Python中,可以使用`encode()`方法将字符串转化为特定编码(如UTF-8),`decode()`方法则用于解码。中文字符通常以UTF-8编码存储,因此在读取或写入包含中文的文件时,需要指定正确的编码。...
这是因为Python 2.7中字符串默认使用ASCII编码,而Unicode编码的字符串前会加上前缀`u`。 #### 解决方案 对于Python 2.7来说,将Unicode编码的中文字符转换回原始中文字符的操作非常简单,只需要直接`print`即可。...