2013-04-25 60 views
5

當我嘗試Unicode轉換:Unicode轉換西裏爾字母符號串在python

a = u"Тест" 

爲String:

str(a) 

我得到這個錯誤:

'ascii' codec can't encode characters in position 0-3: ordinal not in range(128) 

我需要STR (一)給我輸出:

>> str(a) 
>> 'Тест' 
+0

看看這個鏈接:http://stackoverflow.com/questions/2365411/python-convert-unicode-to-ascii-without-errors – 2013-04-25 15:03:07

+0

我一直在看這個標籤幾個星期了,我看到這個問題幾乎每天。您在發佈之前是否嘗試過搜索此錯誤?在這裏,[超過500個結果](http://stackoverflow.com/search?q=%22%27ascii%27+codec+can%27t+encode%22)。 – 2013-04-25 15:05:22

+0

是的,我做了,沒有人不處理我的情況。 – UnLiMiTeD 2013-04-25 15:07:44

回答

4

選擇一個編碼,可以編碼西里爾符號,如UTF-8:

>>> a = u'Тест' 

>>> a.encode('utf-8') 
'\xd0\xa2\xd0\xb5\xd1\x81\xd1\x82' 

的ASCII表中沒有代碼點西里爾字符,所以你需要明確指定編碼。

但是,如果你只想打印字符串,那麼你應該關心的是你的終端和系統字體的編碼。

+0

我得到這個,但我需要顯示他們在字符串編碼像字符串'測試'。 – UnLiMiTeD 2013-04-25 15:23:37

+1

@UnLiMiTeD搜索「python transliterate cyrillic」給出了[this](http://stackoverflow.com/a/14173535/1258041)以及其他內容,如果這是您需要的。 – 2013-04-25 15:26:12