我已经想出如何使用我需要的字符,但它在linux上的控制台与windows控制台的工作方式不同。我想弄清楚是否有办法解决这个问题,我可以让它在两者上工作,或者至少检查一下它运行的系统并调用正确的代码。
这是使用http://www.tutorialspoint.com/execute_python_online.php的编码接地终端 它使用Fedora Release 21和Python v2.7.5。这是我的初始代码:
# Unicode Test
print u'\u2554'
这给了我这个错误:
Traceback (most recent call last):
File "main.py", line 2, in <module>
print u'\u2554'
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2554' in position 0: ordinal not in range(128)
在使用Python 2.7.9的Windows 7控制台上,它正确运行并打印出&#39;╔&#39;字符。为了使它在linux终端上正常运行,我必须使用
# Unicode Test
print u'\u2554'.encode('UTF-8')
不幸的是,此代码无法在Windows控制台下正常运行。如果我在Windows上使用print u'\u2554'.encode('UTF-8')
,我会获得b'\xe2\x95\x94'
关于如何让它在两个系统上运行而不必为每个控制台维护不同代码的任何想法?
答案 0 :(得分:0)
您需要在linux中更改终端的默认编码,然后在终端点击,然后从Terminal
选择Set Character Encoding
,然后选择Unicode (UTF-8)
。欲了解更多信息,请阅读http://www.ianbicking.org/illusive-setdefaultencoding.html