Kodlama/kod çözme arasındaki fark nedir?
Asla str/unicode kodlama ve kod çözme arasındaki farkı anlamak bu kadar emin olmamıştım.
str().decode()
adı kodlamasını unicode dize döndürür verilen belirli bir karakter kodlaması olan bayt dizesi seni bekliyor, biliyorum.
unicode().encode()
bayt dize unicode karakter dönüştürür belirli bir kodlama adı göre biliyorum.
Ama str().encode()
unicode().decode()
ne için olduğunu anlamıyorum. Birisi açıklayabilir ve belki de yanlış yukarıda aldığım başka bir şey değil mi?
DÜZENLEME:
Bazı cevapları .encode
bir dize üzerinde ne yaptığı hakkında bilgi ver, ama hiç kimse .decode
unicode için ne yaptığını biliyor gibi görünüyor.
CEVAP
Unicode dizeleri decode
yöntem gerçekten tüm uygulamaları (nedense bir unicode dizesi metin olmayan bazı veriler olmadığı sürece, aşağıya bakınız) yok. Özellikle tarihsel nedenlerle, sanırım. Python 3'te tamamen gitmiş.
unicode().decode()
örtülü bir konser verecekkodlamas
varsayılan kullanarak (ascıı) Kodek. Bu gibi doğrulayın:
>>> s = u'ö'
>>> s.decode()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf6' in position 0:
ordinal not in range(128)
>>> s.encode('ascii')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf6' in position 0:
ordinal not in range(128)
Hata mesajlarını tam olarak aynıdır.
str().encode()
-- tersi için örtülü çalışırkod çözmevarsayılan kodlama ile s
:
>>> s = 'ö'
>>> s.decode('utf-8')
u'\xf6'
>>> s.encode()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 0:
ordinal not in range(128)
Bu şekilde kullanıldığı, str().encode()
da gereksiz.
Amaorada başka bir uygulama İkinci yöntem yararlıdır: encodings BU OLAYLA bir ilgin olmadığını karakter kümeleri, ve böylece uygulanabilir 8-bit dizeleri olarak anlamlı bir şekilde
>>> s.encode('zip')
'x\x9c;\xbc\r\x00\x02>\x01z'
Haklısın gerçi: "her ikisi için de bu uygulamalar... awkard." kodlama belirsiz kullanımı Yine Python ile byte
string
ayrı tipte 3, Bu artık bir konudur.
Bir URI, URL ve URN arasındaki fark ne...
Aramak ve uygulamak arasındaki fark ne...
@Staticmethod ve @Python classmethod a...
Match_parent ve fill_parent arasındaki...
Varchar ve nvarchar arasındaki fark ne...