当前位置: 首页 > 知识库问答 >
问题:

Python中UTF-8的Url解码

潘坚白
2023-03-14

作为Python的新手,我已经花了很多时间。
我怎么能解码这样的URL:

example.com?title=%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D0%B2%D0%B0%D1%8F+%D0%B7%D0%B0%D1%89%D0%B8%D1%82%D0%B0

到python 2.7中的这个:example.com?title==wetratingajestarbaya+fetrayajestarbaya

url=urllib.unquote(url.encode(“utf8”))返回的内容非常难看。

仍然没有解决办法,任何帮助都是感激的。

共有1个答案

卢雅惠
2023-03-14

数据是通过URL引号转义的UTF-8编码字节,因此您希望使用urllib.parse.unquote()进行解码,它可以透明地处理从百分比编码数据到UTF-8字节,然后再到文本的解码:

from urllib.parse import unquote

url = unquote(url)

演示:

>>> from urllib.parse import unquote
>>> url = 'example.com?title=%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D0%B2%D0%B0%D1%8F+%D0%B7%D0%B0%D1%89%D0%B8%D1%82%D0%B0'
>>> unquote(url)
'example.com?title=правовая+защита'

Python2的等价物是urllib.unquote(),但它返回一个字节字符串,因此必须手动解码:

from urllib import unquote

url = unquote(url).decode('utf8')
 类似资料:
  • 问题内容: 就我是Python的新手而言,我已经花了很多时间。 我怎么能解码这样的URL: 到python 2.7中的这个: 返回的东西非常丑陋。 仍然没有解决方案,我们将提供任何帮助。 问题答案: 数据是使用URL引号进行转义的UTF-8编码字节,因此,您想使用进行 解码 ,使用来处理从百分比编码的数据到UTF-8字节然后再透明地转换为文本的解码: 演示: Python 2等效于,但是它返回一个

  • 问题内容: 我正在用python做一些脚本。我创建一个保存在文件中的字符串。这个字符串有很多数据,来自目录的树状结构和文件名。根据convmv的介绍,我所有的树状结构都是UTF-8。 我想将所有内容都保留在UTF-8中,因为之后我将其保存在MySQL中。现在,在UTF-8的MySQL中,我遇到了一些字符问题(例如é或è-我是法语)。 我希望python始终将字符串用作UTF-8。我在互联网上阅读了

  • 问题内容: 最近,我们将应用程序从JDK 7迁移到了JDK8。更改之后,我们遇到了以下代码段的问题。 字节数组可能包含无效的UTF-8字节序列。UTF-8解码时,相同的字节数组在Java 7和Java 8上产生两个不同的字符串。 根据此SO帖子的答案,Java 8“修复”了Java7中的错误,并用替换字符串替换了无效的UTF-8字节序列,该字符串符合UTF-8规范。 但是我们想坚持使用Java 7

  • 我有一个来自Facebook的“下载您的数据”功能的JSON文件,它不是将Unicode字符作为其代码点号转义,而是作为UTF-8字节序列转义。 例如,字母á (U 00E1)在JSON文件中转义为< code>\u00c3\u00a1,而不是< code>\u00e1。0xC3 0xA1是U 00E1的UTF-8编码。 Python 3中的< code>json库将其解码为,对应于U 00C3和

  • 问题内容: 这里有两个问题。我有一组通常是带有BOM的UTF-8文件。我想将它们(理想情况下)转换为没有BOM的UTF-8。似乎可以解决这个问题。但是我真的看不到任何有关用法的好例子。这将是处理此问题的最佳方法吗? 同样,如果我们能够处理清楚知道的不同输入编码(看到的ASCII和UTF-16),那将是理想的。看来这一切都是可行的。是否有一种解决方案可以采用任何已知的Python编码并以UTF-8格

  • 问题内容: 如何使用Android解码utf-8字符串?我尝试使用此命令,但输出与输入相同: 问题答案: 字符串不需要编码。它只是一个Unicode字符序列。 要将字符串转换为字节序列时需要进行 编码 。您选择的字符集(UTF-8,cp1255等)确定了Character-> Byte映射。请注意,字符不必转换为单个字节。在大多数字符集中,大多数Unicode字符都转换为至少两个字节。 字符串的编