我有以下错误:
UnicodeEncodeError: 'ascii' codec can't encode character '\xd7' in position 31: ordinal not in range(128)
根据此代码:
^{pr2}$输出sys.getdefaultencoding公司名称:
In [6]: sys.getdefaultencoding()
Out[10]: 'utf-8'
我和克劳顿用的是Chromebook——如果这有什么不同的话(我觉得可能会)。在
我不确定是否有某种方法可以“强制”输出这样的字符串,或者忽略任何有问题的字符。在
terminal or console o redirect cannot handle UTF-8; what environment are you trying to print in.
我试着用iPython在Spacemacs中运行这个
In [22]: sys.stdout.encoding
Out[27]: 'ANSI_X3.4-1968'
In the shell, what does the command locale output?
在我运行这个命令的shell中(Spacemacs中的iPython),命令是未定义的,在默认的shell中,ctrl alt t
的输出是
$ locale
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
在POSIX主机上,Python确定来自locale的输出编码,这是一组环境变量,用于通信如何为各种语言设置配置环境。请参见^{} function ,或者更具体地说,是^{} 函数。在
该函数的输出用于设置
sys.stdout.encoding
,然后使用它对打印的任何Unicode文本进行编码。在您的语言环境设置为
POSIX
,这意味着默认编码是ASCII。您需要配置该区域设置以使用支持所有Unicode的编码。对于Chromebook怎么做,我不知道。在我的Mac上,语言环境通常设置为en_US.UTF-8
,因此我的终端支持所有Unicode标准。您可以通过设置export LC_CTYPE=en_US.UTF-8
来强制执行该问题。在您可以通过设置^{} environment variable 来覆盖Python的选择。在
请注意,在最近的Python3发行版中,}使用^{} error handler ,它将用标准的}转义序列替换控制台无法处理的任何字符;因此,您将看到的不是异常:
sys.stdout
和{\xhh
、\uhhhh
和{啊,找了又找,我找到了this。就像上面说的,也许你可以试试:
/etc/locale.gen
文件。在写下以下文字:
也许可以重启Chromebook。
然后检查
locale
命令的输出。在相关问题 更多 >
编程相关推荐