Python 3 UnicodeEncodeError:’ascii’编解码器无法编码字符

Python 3 UnicodeEncodeError:’ascii’编解码器无法编码字符,第1张

概述我刚刚开始学习 Python,但我已经遇到了麻烦. 我有一个只有一个命令的简单脚本: #!/usr/bin/env python3print("Příliš žluťoučký kůň úpěl ďábelské ódy.") # Text in Czech 当我尝试运行此脚本时: python3 hello.py 我收到这条消息: Traceback (most recent call las 我刚刚开始学习 Python,但我已经遇到了麻烦.
我有一个只有一个命令的简单脚本:
#!/usr/bin/env python3print("Příliš žluťoučký kůň úpěl ďábelské ódy.") # Text in Czech

当我尝试运行此脚本时:

python3 hello.py

我收到这条消息:

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)

我正在使用Kubuntu 16.04和Python 3.5.2.
当我尝试这个:导出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 -*-

从一开始它什么都不做.

另一个奇怪的事情:当我只使用python而不是python3运行它时,它可以工作.如何在Python 2.7.12中工作而不是在3.5.2中工作?

永久解决这个问题的任何想法?谢谢.

解决方法 感谢Mark Tolen和Alastair McCormack建议问题所在.问题出在区域设置中.
当我运行语言环境时,输出是:
LANG=CLANGUAGE=LC_CTYPE="C"LC_NUMERIC=cs_CZ.UTF-8LC_TIME=cs_CZ.UTF-8LC_ColLATE=cs_CZ.UTF-8LC_MONETARY=cs_CZ.UTF-8LC_MESSAGES="C"LC_PAPER="C"LC_name="C"LC_ADDRESS="C"LC_TELEPHONE="C"LC_MEASUREMENT=cs_CZ.UTF-8LC_IDENTIFICATION="C"LC_ALL=

此“C”是使用ANSI charmap的默认设置.这就是问题所在.运行locale charmap给了我:ANSI_X3.4-1968,它不能显示非英文字符.
我用这个Ubuntu documentation site解决了这个问题.

我将这些行添加到/ etc / default / locale:

LANGUAGE=cs_CZ.UTF-8LC_ALL=cs_CZ.UTF-8

然后,您必须重新启动会话(注销并进入)才能应用这些设置.

运行语言环境现在返回此输出:

LANG=CLANGUAGE=csLC_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

并运行locale charmap返回:

UTF-8
总结

以上是内存溢出为你收集整理的Python 3 UnicodeEncodeError:’ascii’编解码器无法编码字符全部内容,希望文章能够帮你解决Python 3 UnicodeEncodeError:’ascii’编解码器无法编码字符所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/1207561.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存