如何以 UTF-8 格式解码 URL 并在浏览器上打开它们时使它们正常工作 [复制]

How can I decode the URLs in UTF-8 and make them working when I open them on a browser [duplicate]

提问人:Javi 提问时间:2/20/2023 最后编辑:mkrieger1Javi 更新时间:2/20/2023 访问量:46

问:

我有一个包含三个 URL 的列表,它们都是 String 类型。

my_list = ['https://es.wikipedia.org//wiki/Enciclopedia_Brit%C3%A1nica', 'https://es.wikipedia.org//wiki/Instituto_Nacional_de_Estad%C3%ADstica_(Espa%C3%B1a)', 'https://es.wikipedia.org//wiki/Mar%C3%ADa_Isabel_Gea']

正如你所看到的,其中有一些非 UTF-8 编码。我希望它们以适当的西班牙语编写,然后如果我单击它们,它们会将我引导到相应的网页。

这是我尝试过的代码。

import codecs
my_list = ['https://es.wikipedia.org//wiki/Enciclopedia_Brit%C3%A1nica', 'https://es.wikipedia.org//wiki/Instituto_Nacional_de_Estad%C3%ADstica_(Espa%C3%B1a)', 'https://es.wikipedia.org//wiki/Mar%C3%ADa_Isabel_Gea']
for item in my_list:
    item_bytes = str.encode(item)
    item_string = codecs.decode(item_bytes, 'utf-8')
    print(item_string)

但是,我的“item_string”始终具有相同的编码。

python 字符串 url utf-8

评论


答:

0赞 Alex Kosh 2/20/2023 #1

这称为 url 编码,因此您需要执行 .为此,有一个函数urldecodeunquoteurllib.parse

示例如下:

from urllib.parse import unquote

my_list = ['https://es.wikipedia.org//wiki/Enciclopedia_Brit%C3%A1nica', 'https://es.wikipedia.org//wiki/Instituto_Nacional_de_Estad%C3%ADstica_(Espa%C3%B1a)', 'https://es.wikipedia.org//wiki/Mar%C3%ADa_Isabel_Gea']

for item in my_list:
    print(unquote(item))