python将德语umlaute写入文件

时间:2017-05-10 07:57:40

标签: python

我知道,这个问题已被问过百万次。但我仍然坚持下去。我使用的是python 2,无法更改为python 3.

问题是:

>>> w = u"ümlaut"
>>> w
>>> u'\xfcmlaut'
>>> print w
ümlaut
>>> dic = {'key': w}
>>> dic
{'key': u'\xfcmlaut'}
>>> f = io.open('testtt.sql', mode='a', encoding='UTF8')
>>> f.write(u'%s' % dic)

然后文件有:

{'key': u'\xfcmlaut'}

我需要{'key': 'ümlaut'}{'key': u'ümlaut'}

我错过了什么,我仍然在编码解码的东西:/

2 个答案:

答案 0 :(得分:2)

我不确定你为什么特别喜欢这种格式,因为它无法读入任何其他应用程序,但没关系。

问题是要将字典写入文件,需要将其转换为字符串 - 为此,Python会在其所有元素上调用repr

如果您手动创建输出作为字符串,一切都很好:

d = "{'key': '%s'}" % w
with io.open('testtt.sql', mode='a', encoding='UTF8') as f:
    f.write(d)

答案 1 :(得分:2)

最简单的解决方案是切换到python3,但由于你不能这样做,在尝试将字典保存到文件之前先将字典转换为json。

import io
import json
import sys

reload(sys)
sys.setdefaultencoding('utf8')

w = u"ümlaut"
dic = {'key': w}
f = io.open('testtt.sql', mode='a', encoding='utf8')
f.write(unicode(json.dumps(dic, ensure_ascii=False).encode('utf8')))