2011-03-03 57 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