2012-08-08 25 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的。