Python写入unicode字符错误

Python写入unicode字符错误,python,unicode,Python,Unicode,我在让Python正确处理unicode文本方面遇到了一些问题 我把它归结为以下几点: >>>print 'Høst' Høst >>>print u'Høst' HÃ,st >>>u = u'Høst' >>>u u'H\xf8st' sys.stdout.encoding说它使用UTF-8,这很可能是第一个非unicode打印工作的原因。如果我只需要打印一些东西,那么这个就可以了。然而,我正在从SQLServer中的数

我在让Python正确处理unicode文本方面遇到了一些问题

我把它归结为以下几点:

>>>print 'Høst'
Høst
>>>print u'Høst'
HÃ,st
>>>u = u'Høst'
>>>u
u'H\xf8st'
sys.stdout.encoding说它使用UTF-8,这很可能是第一个非unicode打印工作的原因。如果我只需要打印一些东西,那么这个就可以了。然而,我正在从SQLServer中的数据构建一个xml文档,然后它真的需要是真正的unicode


我的数据看起来是非常好的unicode数据,u'H\xf8st'在我看来是正确的,那么Python为什么一直将其输出为'HÃ,st'

ø
是ISO-8859-1中的
\xc3\xb8
\xc3\xb8
也是Unicode 00F8字符(
ø
)的UTF-8。也许您的控制台真的接受ISO-8859-1而不是UTF-8作为输入,这意味着sys.stdout.encoding是错误的。

您使用的是ipython吗?它的unicode支持被破坏了,我可以用ipython重现您的输出。在标准python shell中尝试您的示例。

这是Ubuntu上的标准python。我刚刚在Windows上进行了测试,它工作正常。也就是说:>>>print u'Høst'返回Høst而不是HÃ,输出中没有括号中的数字。Unicode Python控制台输出在Windows上工作,但在Ubuntu上不工作。现在这是一个令人惊讶的转折@西蒙:对我来说,Ubuntu 10.10和Python 2.6.6都像预期的那样工作。这至少解决了我的打印问题。现在,我可以寻找类似的方法来修复我的xml生成代码?只需将unicode文本编码为正确的编码即可。@Mike我生成了一个包含丹麦字符的XML文档。大多数编辑告诉我它是unicode,并正确显示æå字符。当我使用相同的xml作为Web服务的输入时,由于某种原因,它无法接受xml,除非我使用xml.decode('utf-8'),但它将不再是unicode。类型(xml)的输出是什么?xml.decode('utf-8')实际上返回一个Unicode对象。@没错,它是一个Unicode对象。可悲的是,这只会增加怪诞感。我有一个dom对象。我使用该对象获取unicode字符串dom.toxml(encoding='utf-8')。Web服务完全拒绝直接接受这个,我认为这可能是一个泡沫,因为它给了我一个ascii转换错误,你知道,典型的unicode转换错误。decode('utf-8')允许sud接受它,但web服务另一端的结果只是??正如预期的那样。