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