Python写入Unicode字符错误
我在用Python处理我的unicode文本时遇到了一些问题。
我把问题简化成了以下几点:
>>>print 'Høst'
Høst
>>>print u'Høst'
HÃ,st
>>>u = u'Høst'
>>>u
u'H\xf8st'
系统的输出编码显示它在使用UTF-8,这很可能是为什么第一个非unicode的打印能正常工作的原因。如果我只是需要打印一些东西,那这样就可以了。不过我现在要从SQL Server的数据构建一个xml文档,这时候就真的需要用到真正的unicode了。
我的数据看起来是完全正确的unicode数据,像u'H\xf8st'这样的格式对我来说是没问题的,那为什么Python输出的却是'HÃ,st'呢?
2 个回答
0
你在用ipython吗?它对unicode的支持有问题,我在ipython里也能复现你说的结果。试试在标准的python命令行里运行你的例子。
3
字符 ø
在 ISO-8859-1 编码中是 \xc3\xb8
。而 \xc3\xb8
也是 UTF-8 编码中表示 Unicode 00F8 字符(也就是 ø
)。可能你的控制台实际上接受的是 ISO-8859-1 编码,而不是 UTF-8,这就意味着 sys.stdout.encoding 的设置可能不对。