0

我需要执行谷歌搜索来检索查询结果的数量。我在这里找到了答案 -来自 Python 应用程序的 Google 搜索

但是,对于少数查询,我收到以下错误。我认为查询有 unicode 字符。

UnicodeDecodeError:“ascii”编解码器无法解码位置 28 中的字节 0xc3:序数不在范围内(128)

我搜索了谷歌,发现我需要将 unicode 转换为 ascii,并找到下面的代码。

def convertToAscii(text, action):
            temp = unicode(text, "utf-8")
            fixed = unicodedata.normalize('NFKD', temp).encode('ASCII', action)
            return fixed
    except Exception, errorInfo:
            print errorInfo
            print "Unable to convert the Unicode characters to xml character entities"
            raise errorInfo

如果我使用操作忽略,它会删除这些字符,但如果我使用其他操作,我会遇到异常。

任何想法,如何处理这个?

谢谢

==编辑==我正在使用下面的代码进行编码,然后执行搜索,这会引发错误。

查询 = urllib.urlencode({'q': searchfor})

4

2 回答 2

2

您不能urlencode使用原始 Unicode 字符串。您需要先将它们编码为 UTF-8,然后再输入:

query = urllib.urlencode({'q': u"München".encode('UTF-8')})

这返回q=M%C3%BCnchen了 Google 欣然接受的结果。

于 2011-01-24T01:56:48.647 回答
0

您不能安全地将Unicode转换为 ASCII。这样做涉及丢弃信息(具体来说,它会丢弃非英文字母)。

您应该使用 Unicode 进行整个过程,以免丢失任何信息。

于 2011-01-24T01:39:33.540 回答