我只想让UTF-8正常工作。我试过这个:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
t = "одобрение за"
print t
但是当我从命令行运行这个程序时,输出看起来像:╨╛╨┤╨╛╨▒╤Ç╨╡╨╜╨╕╨╡╨╖╨░
我在网上上下搜索,尝试了整个sys.setdefaultencoding的事情,尝试调用encode()和decode(),尝试将小“u”放在前面,尝试unicode()等等。
我准备好从挫折中迸发出来。对于你应该做什么,有没有明确的答案?
答案 0 :(得分:2)
您的代码适用于我(tm)
In [1]: t = u"одобрение за"
In [2]: print t
одобрение за
确保您的终端支持UTF-8。一种方法是检查LANG
env变量:
$ echo $LANG
en_US.UTF-8
另外,请尝试locale
命令。
$LANG/locale
只是告诉你在写入stdout / stderr时系统会使用什么。
测试终端是否支持UTF-8的最佳方法可能是打印一些内容并查看它是否正确。像这样:
echo -e '\xe2\x82\xac'
你应该得到€
- 签名。
如果没有,请尝试不同的shell ...
答案 1 :(得分:0)
由于您使用的是Windows cmd.exe
,因此您必须执行以下两个步骤:
确保您的控制台使用的是Lucidia控制台字体系列(其他字体无法正确显示UTF-8)。
键入chcp 65001
(ch
ange c
ode p
年龄)并按Enter键。
运行您的命令。
对于后续运行(一旦关闭cmd.exe
窗口),您将不得不再次更改代码页。字体应该是永久性的。