在Ubuntu 12.04中为Python设置UTF-8区域设置
在一个使用Vagrant和hashicorp/precise64
这个盒子设置的Ubuntu 12.04虚拟机上,我的语言设置显示我使用的是UTF-8
,但是Python却获取到了latin-1
的环境。
这是我看到的情况:
vagrant@vagrant:~$ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US"
LC_NUMERIC="en_US"
LC_TIME="en_US"
LC_COLLATE="en_US"
LC_MONETARY="en_US"
LC_MESSAGES="en_US"
LC_PAPER="en_US"
LC_NAME="en_US"
LC_ADDRESS="en_US"
LC_TELEPHONE="en_US"
LC_MEASUREMENT="en_US"
LC_IDENTIFICATION="en_US"
LC_ALL=en_US
vagrant@vagrant:~$ python
Python 2.7.3 (default, Feb 27 2014, 19:58:35)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print u'\u1f41'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'latin-1' codec can't encode character u'\u1f41' in position 0: ordinal not in range(256)
我该如何为Python获取一个真正的UTF-8系统环境呢?
1 个回答
4
在locale
的输出中,LC_CTYPE
的地区设置应该是en_US.UTF-8
。你可以试试这个:
export LC_ALL="en_US.UTF-8"
如果这样还是不行(比如LC_CTYPE
被明确设置了),那么你还可以尝试:
export LC_CTYPE="en_US.UTF-8"