Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python对字符串进行url安全编码?而urllib.quote是错误的_Python_Encoding_Url Rewriting - Fatal编程技术网

如何使用python对字符串进行url安全编码?而urllib.quote是错误的

如何使用python对字符串进行url安全编码?而urllib.quote是错误的,python,encoding,url-rewriting,Python,Encoding,Url Rewriting,您好,我想知道您是否知道将字符串编码为url安全的其他方法,因为urllib.quote做得不对,输出与预期不同: 如果我尝试 urllib.quote('á') 我明白了 “%C3%A1” 但这不是正确的输出,应该是 %E1 正如这里提供的工具所示 这并不是我的难处,quote的不正确输出阻止了浏览器找到资源,如果我尝试的话 urllib.quote('\images\á\some file.jpg') 然后我尝试使用我提到的javascript工具,分别得到这个字符串 %5Cimages%5

您好,我想知道您是否知道将字符串编码为url安全的其他方法,因为urllib.quote做得不对,输出与预期不同:

如果我尝试

urllib.quote('á')

我明白了

“%C3%A1”

但这不是正确的输出,应该是 %E1

正如这里提供的工具所示

这并不是我的难处,quote的不正确输出阻止了浏览器找到资源,如果我尝试的话

urllib.quote('\images\á\some file.jpg')

然后我尝试使用我提到的javascript工具,分别得到这个字符串

%5Cimages%5C%C3%A1%5Csome%20file.jpg

%5Cimages%5C%E1%5Csome%20file.jpg

请注意,两者几乎相同,但quote提供的url不起作用,而另一个url起作用。 我试图在提供给quote的字符串上使用encode('utf-8'),但这并没有什么区别。 我试着用其他带口音的西班牙语单词,它们都有不同的表达方式

这是python错误吗? 你知道一些模块能做到这一点吗?

根据,
%C3%A1
是正确的。在对八位字节流进行百分比编码之前,应该使用UTF-8将字符转换为八位字节流。您链接的网站已过期


有关在URL中处理非ASCII字符的历史记录的更多详细信息,请参阅。

默认情况下,Python是用ASCII解释的,因此,即使文件的编码可能不同,UTF-8字符也会解释为两个ASCII字符

尝试将注释放在代码的第二行的第一行,就像这样,以匹配文件编码,您可能还需要使用
u'á'

# coding: utf-8

使用unicode字符串和字符的数字表示(ord)怎么样

>>> print '%{0:X}'.format(ord(u'á'))
%E1

似乎有人写了一个相当大的函数来转换为ascii URL,这就是我需要的。但是我希望std库中有一些编码工具来完成这项工作。

好的,明白了,我必须像这样编码到iso-8859-1

word = u'á'
word = word.encode('iso-8859-1')
print word

javascript和python都使用相同的编码?你试过unicode吗
repr('á')==“\\xc3\\xa1'”
repr(u'á')==“u'\\xe1'”
@Rob:我很确定UTF-8应该在URL中。相关:
0xc3a1
是一个。@sarnold哦,这很有帮助,现在我知道我想要的URL是unicode而不是UTF-8,但是使用unicode(urlib.quote(string))是不起作用的。可能是,但我的浏览器都找不到使用“更新”编码的资源。因此,任何使用过时但实际工作的编码的模块?@Guillermo,你能更新你的服务器以允许更新的HTTP客户端请求更新的RFC中指定的资源吗?我正在使用web。py的内部服务器暂时不能做任何事情。这是一个黑客攻击,但是对于仍然需要ISO-8859-1的网站可能需要黑客攻击。正如urllib所假设的那样,大多数Web服务器现在都符合UTF-8。虽然有效,但看起来像是黑魔法,而且它不能使用超过1个字符,而且在我的所有内容上循环似乎不是一个好主意。我说得太快了,这些函数没有输出所需的Unicode代码点。