2011-10-03 94 views
65

Python'daki kodlamamda bir sorun yaşıyorum. Farklı yöntemleri denedim ancak çıkışımı UTF-8 olarak kodlamak için en iyi yolu bulamıyorum.Python kod çözme Unicode desteklenmiyor

Bu yapmak çalışıyorum budur:

result = unicode(google.searchGoogle(param), "utf-8").encode("utf-8") 

searchGoogle döner param yönelik ilk Google sonucu.

Bu

hata alıyorum edilir:

exceptions.TypeError: decoding Unicode is not supported 

Herkes ben Python bu hatayı önlemek için UTF-8 benim çıkış kodlamak hale nasıl biliyor mu?

>>> unicode(u'foo', 'utf-8') 

Traceback (most recent call last): 
    File "<pyshell#1>", line 1, in <module> 
    unicode(u'foo', 'utf-8') 
TypeError: decoding Unicode is not supported 

Yani ne istiyor geçerli:: google.searchGoogle(param) zaten unicode döndürür gibi

cevap

83

görünüyor Bir yan not olarak

result = google.searchGoogle(param).encode("utf-8") 

kodunuzu bir utf-8 kodlanmış dize döndürecek şekilde beklediğini, yani ne oldu aynı kodlamayı kullanarak kod çözme (unicode() kullanarak) ve kodlama (.encode() kullanarak)?

+4

Dürüst olmak gerekirse, 'unicode() 'sadece neler olduğunu anlamaya çalışmaktan korkuyordu. Çok teşekkür ederim :-) – simonbs

+2

Şimdi bazen 'ascii' codec'i bayt 0xc3'ü çözemezsiniz. Bunun neden olduğunu biliyor musun? – simonbs

+2

Önerdiğim satırda? Ardından, searchGoogle(), 0xC3 baytlı bir dize döndürdüğü anlamına gelir. '.encode()' işlevini çağırmak, Python'un önce unicode'a dönüştürülmesini sağlar (ascii kodlamasını kullanarak). SearchGoogle() neden bazen unicode ve bazen bir dize döndüreceğini bilmiyorum. Belki de "paramda" ne verdiğinize bağlı? Bir türe yapışmayı dene. – yak