gpt4 book ai didi

python - 为什么在特定环境下 UNICODE 字符会触发 EncodeError 而在其他环境下则不会?

转载 作者:行者123 更新时间:2023-12-01 08:24:50 25 4
gpt4 key购买 nike

我正在制作一个Python项目,需要使用希腊字符打印、编辑和返回字符串。

在我安装了希腊语的主电脑上,一切运行正常,但是当我在我的英语笔记本电脑上运行具有相同版本的 python 的相同程序时,会触发编码错误。尤其是这个:

EncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)

由于此代码而发生错误

my_string = "Δίας"
print(my_string)

为什么会发生这种情况以及我需要做什么来解决它?

最佳答案

为什么会发生这种情况?您正在使用 Python 2,尽管它支持 Unicode,但与 Python 3 相比,它会让您显式地跳过更多的麻烦。您提供的字符串包含超出正常前 128 个 ASCII 字符的字符,这就是导致问题的原因。

print 语句尝试将字符串编码为标准 ascii,但它遇到了它无法理解的字符,此时,它不知道什么编码您可能认为这很明显:“文件采用的编码相同!”或“始终使用 UTF-8!”,但 Python 2 希望您将其明确化。

您需要做什么来修复它?如果您需要的只是一个快速的解决方案,一种解决方案是使用 Python 3 并且不用担心它。 Python 3 确实是目前的前进方向,使用 Python 2 可以让您解决当今许多 Python 程序员不必解决的问题(尽管他们最终应该能够解决)。

如果您想继续使用 Python 2,您应该将代码更改为:

# coding=utf-8
my_string = u"Δίας"
print(my_string.encode('utf-8'))

第一行明确告诉解释器源文件是用什么编码编写的。这也有助于您的 IDE,确保它正确地向您显示代码。第二行在字符串前面有一个u,告诉Python my_string实际上是一个unicode字符串。第三行明确告诉 Python 您希望输出也采用 utf-8 编码。

关于这一切的更完整的解释在这里 https://docs.python.org/2/howto/unicode.html

如果您想知道为什么它在希腊计算机上工作,但在英语计算机上不起作用 - 希腊计算机上的默认编码实际上具有您正在使用的字符的代码点,而英语编码则没有。这表明Python足够聪明,能够弄清楚事物是utf(并且字符串是一系列unicode代码点),但是当它需要对它们进行编码时,它不知道要使用什么编码,作为标准(英文)编码没有字符串中的字符。

关于python - 为什么在特定环境下 UNICODE 字符会触发 EncodeError 而在其他环境下则不会?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54337784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com