使用python强制UTF8输出

2024-05-28 11:16:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下错误:

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=

Tags: thein命令错误ipythonsysshellout
2条回答

在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发行版中,sys.stdout和{}使用^{} error handler,它将用标准的\xhh\uhhhh和{}转义序列替换控制台无法处理的任何字符;因此,您将看到的不是异常:

Antelope Canyon, Arizona [1600\xd71068] </a>&#32; <span class="domain">(<a 

啊,找了又找,我找到了this。就像上面说的,也许你可以试试:

  1. 编辑(首先创建)/etc/locale.gen文件。在
  2. 写下以下文字:

    en_GB.UTF-8 UTF-8
    LC_ALL="en_GB.UTF-8"
    
  3. 也许可以重启Chromebook。

然后检查locale命令的输出。在

相关问题 更多 >