![](/img/trans.png)
[英]UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9'
[英]'ascii' codec can't encode character u'\xe9'
我已經嘗試過所有以前的答案和解決方案。
我正在嘗試使用此值,這給了我編碼相關的錯誤。
ar = [u'http://dbpedia.org/resource/Anne_Hathaway', u'http://dbpedia.org/resource/Jodie_Bain', u'http://dbpedia.org/resource/Wendy_Divine', u'http://dbpedia.org/resource/Jos\xe9_El\xedas_Moreno', u'http://dbpedia.org/resource/Baaba_Maal']
所以我嘗試了
d = [x.decode('utf-8') for x in ar]
這使:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 31: ordinal not in range(128)
我嘗試了
d = [x.encode('utf-8') for x in ar]
可以消除錯誤,但可以更改原始內容
原始值為u'http://dbpedia.org/resource/Jos\\xe9_El\\xedas_Moreno'
,在使用encode
轉換為'http://dbpedia.org/resource/Jos\\xc3\\xa9_El\\xc3\\xadas_Moreno'
解決這種情況的正確方法是什么?
編輯
輸入這些鏈接時出現錯誤
req = urllib2.Request()
python中的Unicode strings
是"raw" unicode
,因此請確保適當地使用.encode()
和.decode()
。 在世界各地的多個開發人員小組中,使用utf8
編碼被認為是最佳實踐。 要進行編碼,請使用urllib2
庫中的quote
函數:
from urllib2 import quote
escaped_string = quote(unicode_string.encode('utf-8'))
要解碼,請使用unquote
:
from urllib2 import unquote
src = "http://dbpedia.org/resource/Jos\xc3\xa9_El\xc3\xadas_Moreno"
unicode_string = unquote(src).decode('utf-8')
另外,如果您對Unicode和UTF-8工作更感興趣,請查看Unicode HOWTO和
在您的Unicode列表中, u'http://dbpedia.org/resource/Jos\\xe9_El\\xedas_Moreno'
是表示Unicode字符串的ASCII安全方法。 當以支持完整的西歐字符集的格式(例如UTF-8)進行編碼時,它是: http://dbpedia.org/resource/José_Elías_Moreno
: http://dbpedia.org/resource/José_Elías_Moreno
您的.encode("UTF-8")
是正確的,並且在UTF-8編輯器或瀏覽器中看起來還可以。 編碼后看到的是UTF-8的ASCII安全表示。
例如,您的麻煩字符是é和í。
é = 00E9 Unicode = C3A9 UTF-8
í = 00ED Unicode = C3AD UTF-8
簡而言之,您的.encode()
方法是正確的,應該用於寫入文件或瀏覽器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.