2011-03-03 62 views
6

在Python中,unicode字符串中有一个encode方法用于从unicode编码为字节字符串。在字符串中有一个decode方法来做相反的处理。Python字符串编码方法

但我很困惑什么encode方法在字符串中?

+0

看看这个演示文稿'在Python中的Unicode,完全揭秘'http://farmdev.com/talks/unicode/ – rubayeet 2011-03-03 06:47:55

+0

我见过。这并不能解释我的问题。 – amit 2011-03-03 12:42:33

回答

10

对于非文本编解码器非常有用。

>>> 'Hello, world!'.encode('hex') 
'48656c6c6f2c20776f726c6421' 
>>> 'Hello, world!'.encode('base64') 
'SGVsbG8sIHdvcmxkIQ==\n' 
>>> 'Hello, world!'.encode('zlib') 
'x\x9c\xf3H\xcd\xc9\xc9\xd7Q(\xcf/\xcaIQ\x04\x00 ^\x04\x8a' 
+0

哇,它甚至可以工作,如果编码的字符串与默认编码不兼容!这意味着它并不总是将字符串解码为先unicode ... – DzinX 2011-03-03 08:41:22

+0

好吧,如果我们编码为一种字符编码,它看起来会解码为unicode。奇怪。 – amit 2011-03-03 12:44:13

5

它首先使用默认编码解码为Unicode,然后编码回字节字符串。

>>> import sys 
>>> sys.getdefaultencoding() 
'ascii' 
>>> sys.setdefaultencoding('latin-1') 
>>> '\xc4'.encode('utf-8') 
'\xc3\x84' 

这里,'\xc4'是Latin-1的a和'\xc3\x84'是UTF-8为一个。

-4

为什么你不想自己阅读精美的Python文档?

http://docs.python.org/release/2.5.2/lib/string-methods.html

“””编码([编码[,错误]])返回字符串的编码版本,默认的编码是当前的默认字符串编码。可给予错误设置一个不同的错误处理方案错误的默认值是'strict',这意味着编码错误会引发一个UnicodeError。其他可能的值有'ignore','replace','xmlcharrefreplace','backslashreplace'和通过codecs.register_error注册的任何其他名称,参见4.8节.1。有关可能的编码列表,请参见第4.8.3节。2.0版本中的新增功能。2.3版本中的更改:支持'xmlcharrefreplace'和'backslashreplace'以及其他错误处理方案的添加。“”“

+0

Python的文档在解释编码和解码工作以及何时发生隐式转换方面做得很差。在这种情况下,指向文档的简单指针不够好。 – Triptych 2011-03-03 07:48:12