Python 为wikimedia api使用扩展ascii字符

Python 为wikimedia api使用扩展ascii字符,python,api,mediawiki,Python,Api,Mediawiki,我正在为维基百科编写一个简单的搜索算法。当我发送一个带有口音的字符和普通英语中看不到的其他字符的查询时,我遇到了问题。返回错误的查询有: –Tarski%20paradox&prop=links&pllimit=33&format=xml 但是,如果存在诸如“分形”之类的简单字符,查询就可以正常工作。我应该如何更改查询的格式以使其正常工作 我的代码是开源的,位于:。请查看hg/src/list.py。我在Python源代码中没有看到任何关于如何对查询中发送的任何非ascii字符进行编

我正在为维基百科编写一个简单的搜索算法。当我发送一个带有口音的字符和普通英语中看不到的其他字符的查询时,我遇到了问题。返回错误的查询有:



–Tarski%20paradox&prop=links&pllimit=33&format=xml



但是,如果存在诸如“分形”之类的简单字符,查询就可以正常工作。我应该如何更改查询的格式以使其正常工作


我的代码是开源的,位于:。请查看hg/src/list.py。

我在Python源代码中没有看到任何关于如何对查询中发送的任何非ascii字符进行编码的痕迹。对于使用ascii以外的任何内容的URL(包括其中的查询字符串),您需要(如果它们已经不是unicode,则将它们设置为unicode)用utf-8编码并转义结果(对于后者,请使用标准Python库模块
urllib
中的函数
urllib.quote_plus
,当然,对于编码,请使用unicode字符串的
.encode('utf8')
方法——如果需要从不同编码的字节字符串生成unicode字符串,请使用字节字符串的
.decode('latin-1'))
——或者不管它的编码名称是什么;-)。

没有“扩展ASCII”这样的东西。ASCII是ASCII。我将代码更改为下面的代码,它可以工作!t=urllib2.quote(tree.name.encode('utf8'))s=“”%(t,plimit)