我已经搜索并发现了一些相关的问题,但是他们处理Unicode的方式不同,所以我无法将解决方案应用到我的问题上。在
我不会粘贴整个代码,但我确信这个独立的示例代码复制了错误: (我还使用wx for GUI,所以这就像在类中一样)
#coding: utf-8
...
something = u'ЧЕТЫРЕ'
//show the Russian text in a Label on the GUI
self.ExampleLabel.SetValue(str(self.something))
在Eclipse上,一切都很完美,它显示了俄罗斯字符。但是,当我试图直接打开Python文件时,CL上出现了以下错误:
^{pr2}$我想这和CL不能输出Unicode字符和Eclipse在幕后做魔术有关。有什么帮助可以让它自己工作吗?在
请改为尝试
self.something.encode('utf-8')
。在当您在没有指定编码的情况下调用^{{cd1>}时,将使用默认编码,这取决于程序运行的环境。在Eclipse中,这与命令行不同。
不要依赖默认编码,而是显式指定它:
您可能想研究Python Unicode HOWTO以了解编码和^{cd1>}对unicode对象的作用。wxPython项目也有page on Unicode usage。
如果您使用repr而不是str,那么它应该为您处理转换,并且还包括对象不总是string类型的情况,但是您可能会发现它在您的上下文中为您提供了一组额外的引号甚至unicode u。repr比str更安全-str假设使用ascii编码,但是repr将以代码中看到的相同方式显示代码点,因为用eval包装应该将其转换回原来的样子-repr必须以python代码的形式存在,即ascii安全,因为大多数python代码都是用ascii编写的。在
相关问题 更多 >
编程相关推荐