2012-08-08 26 views
-1

我遇到了python字符集和德語字符的問題。我試圖獲得使用MySQLdb的數據庫中嘗試這樣的字符串:Python和字符集

array=result.fetch_row()[0] 

如果我打印陣列我得到的所有的價值觀和我的字符串「F \ xfcr」 < - 這正是我需要的。

但是,如果我打印array[stringlocation]我得到'f�r'代表66 FC 72(爲什麼不是這個unicode了嗎?)

如果我寫這篇文章到一個文件:'fÃŒr'或十六進制66 C3 BC 72

我認爲這不是mysqldb的問題。我無法獲得所需的字符。

注意:我正在使用set名稱latin1。如果我使用utf8,我將獲得雙打:f\xc3\xbcr

謝謝你的幫助!

+4

快速回答:閱讀[Python Unicode HOWTO](http://docs.python.org/howto/unicode.html),然後返回UTF-8的方式。 :-) – 2012-08-08 20:47:31

+0

那麼...我嘗試了一些編碼/解碼/ unicode功能,我仍然沒有得到如何編寫可讀的字符 – user1585914 2012-08-08 20:59:10

+0

你如何寫入文件?請記住,'f \ xfcr''不是以unicode開始的;這是一串字節。 – geoffspear 2012-08-08 21:26:05

回答

1

如果'f\xfcr'是從數據庫返回的內容,並且與您需要寫入文件的內容相同,則唯一的問題是您打印時顯示的內容。爲此你需要做一個翻譯。

>>> print 'f\xfcr'.decode('latin1') 
für 

這工作,因爲print命令會自動翻譯由decode產生回你的顯示器使用的字符集Unicode的。