2015-12-05 65 views
1

問題,在單詞的字母土耳其無法識別。但是,當我嘗試將字符串存儲爲其他語言(如俄語,日語和中文)時,不會出現此類問題。的Python:在閱讀和打印土耳其與我在閱讀下面的問題和蟒蛇打印土耳其土耳其字母

>>> s = u'abartmadığını' 
>>> s 
u'abartmad???n?' 
>>> print s 
abartmad???n? 

如何調整編碼來解決這個問題?我在Windows 10使用Python 2.7.10和更改命令行的代碼頁28595似乎不工作,我剛剛在Python控制檯下面的錯誤。

LookupError: unknown encoding: cp28595

+0

也許你可能需要使用非字母土耳其接受,因爲土耳其字母可能不是Unicode的使用。 –

+0

@FranzNoel不,同樣的事情上順暢運行的Mac OS,必須有一些問題,在Linux上 –

+0

運作良好的環境。必須是Windows 10的東西。你在使用CMD終端嗎? – Muposat

回答

2

Windows控制檯是臭名昭著的不支持Unicode的好。使用支持UTF-8輸出的IDE。下面是PythonWin的,該pywin32第三方模塊的一部分的例子:

PythonWin 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win32. 
Portions Copyright 1994-2008 Mark Hammond - see 'Help/About PythonWin' for further copyright information. 
>>> s = u'abartmadığını. 我是美國人。 ру́сский язы́к' 
>>> s 
u'abartmad\u0131\u011f\u0131n\u0131. \u6211\u662f\u7f8e\u56fd\u4eba\u3002 \u0440\u0443\u0301\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u0301\u043a' 
>>> print s 
abartmadığını. 我是美國人。 ру́сский язы́к 
+0

馬克是正確的,即使在今天,Unicode和Windows控制檯確實有嚴重錯誤。 – sorin

+0

這個模塊專門針對Windows控制檯:https://github.com/Drekin/win-unicode-console –

2

其編碼爲UTF-8

>>> s = u'abartmadığını' 

>>> print s.encode('utf-8') 

abartmadığını 
+0

,只有當控制檯編碼配置爲UTF-8,這是不太可能在Windows的情況下工作。 –

+0

打印時不應編碼!標準輸出已經應用了一種編碼,因此您可能會進行雙重編碼,並使您的代碼無法與平臺相關。如果用戶在打印時出現錯誤,那麼他們應該調查潛在的問題。在這種情況下,用戶正在使用Windows,因此編碼控制檯不是解決方案。 –