我搜索并发现了一些相关的问题,但他们处理Unicode的方式不同,所以我不能将解决方案应用到我的问题中.
我不会粘贴我的整个代码,但我确信这个孤立的示例代码会复制错误:
(我也在使用wx进行GUI,所以这就像在一个类中)
#coding: utf-8
...
something = u'ЧЕТЫРЕ'
//show the Russian text in a Label on the GUI
self.ExampleLabel.SetValue(str(self.something))
在Eclipse上,一切都很完美,它显示了俄语字符.但是,当我尝试直接打开文件时,我在CL上遇到此错误:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-11:
ordinal not in range(128)
我认为这与CL无法输出Unicode字符和Eclipse做幕后魔术有关.有关如何制作它以使其独立工作的任何帮助?
最佳答案 当你在没有指定编码的情况下调用str()时,会使用默认编码,这取决于程序运行的环境.在Eclipse中,这与命令行不同.
不要依赖默认编码,而是明确指定它:
self.ExampleLabel.SetValue(self.something.encode('utf-8'))
您可能想学习Python Unicode HOWTO以了解编码和str()对unicode对象的作用. wxPython项目也有page on Unicode usage.