Sme*_*ety 7 unicode encoding locale utf-8 python-3.5
我刚刚开始学习Python,但我已经遇到了麻烦.
我有一个只有一个命令的简单脚本:
#!/usr/bin/env python3
print("P?íliš žlu?ou?ký k?? úp?l ?ábelské ódy.") # Text in Czech
Run Code Online (Sandbox Code Playgroud)
当我尝试运行此脚本时:
python3 hello.py
Run Code Online (Sandbox Code Playgroud)
我收到这条消息:
Traceback (most recent call last):
File "hello.py", line 2, in <module>
print("P\u0159\xedli\u0161 \u017elu\u0165ou\u010dk\xfd k\u016fn \xfap\u011bl \u010f\xe1belsk\xe9 \xf3dy.")
UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-2: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)
我正在使用Kubuntu 16.04和Python 3.5.2.当我尝试这个:export PYTHONIOENCODING=utf-8它工作但只是暂时的.下次我打开bash时遇到了同样的错误.
根据https://docs.python.org/3/howto/unicode.html#the-string-type,Python
源代码的默认编码是UTF-8.
所以我把源文件保存为id UTF-8,Konsole设置为UTF-8但我仍然得到错误!
即使我补充说
# -*- coding: utf-8 -*-
Run Code Online (Sandbox Code Playgroud)
从一开始它什么都不做.
另一个奇怪的事情:当我只使用python而不是python3运行它时,它可以工作.如何在Python 2.7.12中工作而不是在3.5.2中工作?
永久解决这个问题的任何想法?谢谢.
Sme*_*ety 10
感谢Mark Tolen和Alastair McCormack建议问题所在.问题出在区域设置中.
当我跑locale,输出是:
LANG=C
LANGUAGE=
LC_CTYPE="C"
LC_NUMERIC=cs_CZ.UTF-8
LC_TIME=cs_CZ.UTF-8
LC_COLLATE=cs_CZ.UTF-8
LC_MONETARY=cs_CZ.UTF-8
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT=cs_CZ.UTF-8
LC_IDENTIFICATION="C"
LC_ALL=
Run Code Online (Sandbox Code Playgroud)
此"C"是使用ANSI charmap的默认设置.这就是问题所在.跑步locale charmap给了我:ANSI_X3.4-1968它不能显示非英文字符.
我使用这个Ubuntu文档站点修复了这个问题.
我将这些行添加到/etc/default/locale:
LANGUAGE=cs_CZ.UTF-8
LC_ALL=cs_CZ.UTF-8
Run Code Online (Sandbox Code Playgroud)
然后,您必须重新启动会话(注销并进入)才能应用这些设置.
locale现在运行会返回此输出:
LANG=C
LANGUAGE=cs
LC_CTYPE="cs_CZ.UTF-8"
LC_NUMERIC="cs_CZ.UTF-8"
LC_TIME="cs_CZ.UTF-8"
LC_COLLATE="cs_CZ.UTF-8"
LC_MONETARY="cs_CZ.UTF-8"
LC_MESSAGES="cs_CZ.UTF-8"
LC_PAPER="cs_CZ.UTF-8"
LC_NAME="cs_CZ.UTF-8"
LC_ADDRESS="cs_CZ.UTF-8"
LC_TELEPHONE="cs_CZ.UTF-8"
LC_MEASUREMENT="cs_CZ.UTF-8"
LC_IDENTIFICATION="cs_CZ.UTF-8"
LC_ALL=cs_CZ.UTF-8
Run Code Online (Sandbox Code Playgroud)
并运行locale charmap返回:
UTF-8
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5650 次 |
| 最近记录: |