首先要搞清楚,字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。
decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串转换成unicode编码。
encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表示将unicode编码的字符串转换成gb2312编码。
在某些IDE中,字符串的输出总是出现乱码,甚至错误,其实是由于IDE的结果输出控制台自身不能显示字符串的编码,而不是程序本身的问题。
如在UliPad中运行如下代码:
s=u"中文"
print s
会提示:UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)。
这是因为UliPad在英文WindowsXP
上的控制台信息输出窗口是按照ascii编码输出的(英文系统的默认编码是ascii),而上面代码中的字符串是Unicode编码的,所以输出时产生了错误。
将最后一句改为:
print s.encode('gb2312')
则能正确输出“中文”两个字。
若最后一句改为:
print s.encode('utf8')
则输出:\xe4\xb8\xad\xe6\x96\x87,这是控制台信息输出窗口按照ascii编码输出utf8编码的字符串的结果。
另外,代码中字符串的默认编码与代码文件本身的编码一致,如:s='中文'
如
果是在utf8的文件中,该字符串就是utf8编码,如果是在gb2312的文件中,则其编码为gb2312。
这种情况下,要进行编码转换,都需要先用decode方法将其转换成unicode编码,再使用encode方法将其转换成其他编码。
通常,在没有指定特
定的编码方式时,都是使用的系统默认编码创建的代码文件。 (看最后)
如果字符串是这样定义:s=u'中文'
则该字符串的编码就被指定为unicode了,即python的内部编码,而与代码文件本身的编码无关。因此,对于这种情况做编码转换,只需要直接使用encode方法将其转换成指定编码即可。
如果一个字符串已经是unicode了,再进行解码则将出错,因此通常要对其编码方式是否为unicode进行判断:
isinstance(s, unicode) #用来判断是否为unicode
下面给出用Python获取系统默认编码的例子:
#!/usr/bin/env python
#coding=utf-8
"""
获取系统默认编码
"""
import sys
print sys.getdefaultencoding()
该段程序在英文WindowsXP上输出为:
ascii)
分享到:
相关推荐
Python 字符串的 encode 与 decode 研究 Python 中的字符串编码问题是非常常见的,很多开发者在处理字符串时会遇到乱码问题。这个问题的根源是 Python 字符串的内部表示是 Unicode 编码,而在编码转换时需要以 ...
### Python3字符串encode与decode详解 #### 一、引言 在Python3中,字符串处理是非常常见且重要的操作之一。由于Python3默认采用Unicode作为其内部字符串编码方式,因此在处理不同编码格式(如UTF-8、GBK等)的...
本文将对Python字符串进行深入探讨,涵盖其基本概念、操作方法以及高级特性。 一、字符串定义与创建 在Python中,字符串是由单引号或双引号括起来的字符序列。例如: ```python str1 = 'Hello, World!' str2 = ...
实例如下: # bytes object b = bexample # str object s = example ...以上这篇python字符串str和字节数组相互转化方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多
字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。 decode的作用是将...
Python字符串是编程中常用的数据类型,它用于存储和处理文本信息。在Python中,字符串有其独特的特性和操作方式,让我们一一深入探讨。 首先,**字符串的驻留机制**是Python为了提高性能的一种优化策略。当创建一个...
Python字符串及表达式详解 Python中的字符串是一种基本的数据类型,用于存储文本信息。在Python中,字符串可以使用单引号、双引号或三引号来表示。字符串可以进行各种操作,如字符串连接、字符串分割、字符串检索、...
学习Python字符串是编程基础的重要部分,它涉及到文本处理、数据解析、日志记录等多个领域。熟练掌握字符串操作能够提高代码的效率和可读性,为后续的编程工作打下坚实的基础。在实际应用中,结合其他Python内置函数...
以下是关于Python字符串压缩的一些关键知识点: 1. **zlib库**: - `zlib`是Python内置的库,它提供了对`DEFLATE`算法的压缩和解压缩功能,这是广泛用于文件压缩的标准,如ZIP和GZIP文件格式。 - 示例代码展示了...
在Python编程语言中,字符串是数据...通过实践这些例子,你可以更好地理解和掌握Python字符串的使用技巧,进一步提升编程能力。在实际开发中,灵活运用这些方法能有效地处理和展示文本数据,提高代码的可读性和效率。
- **编码与解码**:可以通过 `.encode()` 和 `.decode()` 方法转换字符串的编码。 #### 示例代码 ```python s = 'Hello World' print(len(s)) # 输出 11 print(s.find('o')) # 输出 4 print('o' in s) # 输出 True...
`decode(encoding='UTF-8',errors='strict')`和`encode(encoding='UTF-8',errors='strict')`分别用于解码和编码字符串。它们接受`encoding`参数指定编码格式,如UTF-8,以及`errors`参数处理编码错误的方式,如忽略...
Python字符串类有许多内置方法,如`lower()`、`upper()`用于大小写转换,`find()`、`index()`用于查找子串位置,`startswith()`、`endswith()`检查字符串是否以特定前缀或后缀开始或结束。 通过理解并熟练掌握上述...
03_Python数据类型_字符串 对应的源码资源,欢迎下载练习。 字符串是Python编程中不可或缺的部分,掌握字符串的操作对于编写Python程序至关重要。 Python中的字符串在内存中以Unicode表示,但存储到文件或通过网络...
在Python编程语言中,字符串是数据处理的核心组成部分。在创建字符串时,我们有时会在其前面添加特定的前缀,如`u`, `r`, 或 `b`,这些前缀分别代表不同的含义,用来处理字符串的不同方面。下面我们将详细探讨这三个...
以下是一些可能涉及的Python字符串处理知识点: 1. 字符串的基本操作:如创建、赋值、打印、索引、切片等。 2. 字符串是不可变的:这意味着一旦创建,不能改变其内容。 3. 字符串方法:`len()`用于获取字符串长度,...
在Python2中,当你尝试打印一个字节字符串时,Python会尝试使用系统默认的编码进行解码,如果该编码与字节字符串的实际编码不匹配,就可能出现乱码。而在Python3中,print语句会自动处理字符串的编码和解码,确保...
Python字符串支持索引和切片操作,可以访问或截取字符串的部分内容。例如: ```python print(str1[0]) # 输出首字符 'H' print(str2[7:11]) # 输出子字符串 'fun' ``` 3. **字符串方法** Python提供了丰富的...
`encode` 和 `escape` 是处理字符串时经常遇到的两个概念,尤其在处理字符编码和网络传输时更为关键。在这篇博文中,我们将深入探讨这两个概念,以及它们在Java中的具体实现。 首先,让我们了解`encode`。字符串`...