Python写入Unicode字符错误

2 投票
2 回答
1616 浏览
提问于 2025-04-16 13:26

我在用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 的设置可能不对。

撰写回答