SORU
5 NİSAN 2011, Salı


Geçersiz devamı byte UnicodeDecodeError

Neden madde altında başarısız oluyor? ve neden "latin-1" Kodek? hazırlıyor

o = "a test of \xe9 char" #I want this to remain a string as this is what I am receiving
v = o.decode("utf-8")

sonuçları:

 Traceback (most recent call last):  
 File "<stdin>", line 1, in <module>  
 File "C:\Python27\lib\encodings\utf_8.py",
 line 16, in decode
     return codecs.utf_8_decode(input, errors, True) UnicodeDecodeError:
 'utf8' codec can't decode byte 0xe9 in position 10: invalid continuation byte

CEVAP
5 NİSAN 2011, Salı


İkili 1110 1001 gibi görünüyor. Eğer UTF-8 on Wikipedia, hakkında okursanız böyle bir bayt 7 ** şeklinde iki tarafından takip edilmesi gerektiğini görürsünüz. Bu yüzden, örneğin:

>>> '\xe9\x80\x80'.decode('utf-8')
u'\u9000'

Ama bu durum mekanik bir neden yok. Bu durumda, neredeyse kesinlikle latin 1 olarak kodlanmış bir dize var. UTF-8 ve latin 1 farklı nasıl görüneceğini görebilirsiniz:

>>> u'\xe9'.encode('utf-8')
'\xc3\xa9'
>>> u'\xe9'.encode('latin-1')
'\xe9'

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • A Alkhaldi

    A Alkhaldi

    12 Mayıs 2007
  • GALERNAYA20

    GALERNAYA20

    19 NİSAN 2011
  • WK

    WK

    9 Ocak 2006