python - 如何解决 UnicodeWarning 问题?

标签 python unicode ascii

我花了大约四个小时研究“UnicodeWarning:Unicode 不平等比较”问题。通常,几个小时后,我就能自己回答最棘手的问题,但这里不是这样。当然,我指的是我自己的“棘手”。 ;-)

我知道类似的问题在网上和这个网站上都有答案,但是太菜鸟无法很好地理解答案对我一点帮助都没有。也许对我来说最好的方法就是让别人指出我的代码中需要更改的地方。

我在 Windows XP 上使用 Python 2.5。

我想出了什么

我知道我的问题与我试图比较苹果和橙子(或 Unicode 和 ASCII,或类似的东西,比如字节)有关。我不知道的是解决这个问题的实用方法。

这是我的代码:

# coding: iso-8859-1
import sys
from easygui import *

actual_answer = "pureté"
answer_given = enterbox("Type your answer!\n\nHint: 'pureté'")

if answer_given == actual_answer:
    msgbox("Correct! The answer is 'pureté'")
else:
    msgbox("Bug!")

这是我收到的错误消息:

UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal

最佳答案

首先,阅读:http://www.joelonsoftware.com/articles/Unicode.html

然后 - 在任何系统中处理 Python 时,你都不应该真正使用 iso-8859-1 编码 - 请改用 utf-8

第三,您的 easygui 组件返回给您一个 unicode 对象而不是一个字节串。在上面的代码中解决这个问题的最简单方法是使 actual_answer 变量成为一个 unicode 对象,但在引号前加上“u”前缀,例如:

actual_answer = u"pureté"

关于python - 如何解决 UnicodeWarning 问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14309954/

相关文章:

python - 在 Python 列中查找最大值

php - 将 unicode 转换为 html 实体十六进制

ascii - 为上标 "r"找到正确的 ASCII 字符?

mysql - Rails - 将 ascii 转换为字符

python - 你如何在 python 中解码 ascii 字符串?

python - 在 ABAQUS/Viewer 中枚举元素集的节点

python - C或Python中的声音识别和分类库

python - 奇怪的 Cython 语法

javascript - 在 unicode 字母旁边显示 unicode 重音符号,而不是组合

macos - 在 os x 上的 IntelliJ 11.1 中,使用 emacs 模式 M-B 输入 unicode 积分