2011-03-03 32 views
6

Python'da, unicode ile bayt dizgesini kodlamak için unicode dizelerinde bir encode yöntemi vardır. Geri yapmak için dize içinde bir decode yöntemi vardır.Python Dize kodlama yöntemi

Dize için encode yönteminin ne olduğunu karıştırdım?

+0

Bu sunumda 'Unicode in Python, Tamamen Demystified' http://farmdev.com/talks/unicode/ – rubayeet

+0

Bunu gördüm. Sorumu açıklamıyor. – amit

cevap

10

Metin olmayan kodekler için kullanışlıdır.

>>> '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

Vay, hatta kodlanmış dize varsayılan kodlama ile uyumlu değilse çalışır! Bu, her zaman ilk önce unicode için dize çözme anlamına gelmez ... – DzinX

+0

Tamam, karakter kodlamaları birini kodlamak eğer unicode için çözeriz gibi görünüyor. Garip. – amit

5

Varsayılan kodlamayı kullanarak ilk olarak Unicode kodunu çözer, sonra da bir bayt dizesine geri kodlar. İşte

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

, '\xc4' Latin 1'dir Ä için ve '\xc3\x84' Ä için UTF-8'dir.

-4

Neden ince Python belgelerine kendiniz okumak istemiyoruz?

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

""" kodlamak ([kodlama [hatalar]]) dize kodlanmış sürümünü döndürür. Varsayılan kodlama geçerli varsayılan dize kodlama. Hataları farklı hata işleme düzenini ayarlamak için verilebilir Hatalar için varsayılan 'katı', yani kodlama hatalarının UnicodeError'ı yükseltmesi anlamına gelir.Olası olası değerler 'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace' ve codecs.register_error üzerinden kayıtlı diğer adlardır, bkz. Bölüm 4.8 .1 Olası kodlamaların bir listesi için, bkz. Bölüm 4.8.3 Yeni sürüm 2.0. Sürüm 2.3'te değiştirildi: 'xmlcharrefreplace' ve 'backslashreplace' ve diğer hata işleme düzenleri için destek eklendi. "" "

+0

Python'un belgeleri, işlerin nasıl kodlandığını ve kodunu çözdüğünü ve örtük dönüşümler gerçekleştiğini açıklayan kötü bir iş çıkardı. Bu durumda, dokümanlar için basit bir işaretçi yeterince iyi değil. – Triptych