当我尝试使用urllib.request和Python在wikipedia网站的URL中刮取一个特殊字符时,会得到以下错误UnicodeEncodeError: 'ascii' codec can't encode character '\xf8' in position 23: ordinal not in range(128)
代码:

# -*- coding: utf-8 -*-
import urllib.request as ur

url = "https://no.wikipedia.org/wiki/Jonas_Gahr_Støre"
r = ur.urlopen(url).read()

如何将urllib.request与utf-8编码一起使用?

最佳答案

显然,urllib只能处理ASCII请求,将url转换为ASCII会在特殊字符上产生错误。
用%C3%B8替换ø,这是在http中编码这个特殊字符的正确方法,似乎起到了作用。但是,我找不到像您的浏览器那样自动执行此操作的方法。
例子:

>>> f="https://no.wikipedia.org/wiki/Jonas_Gahr_St%C3%B8re"
>>> import urllib.request
>>> g=urllib.request.urlopen(f)
>>> text=g.read()
>>> text[:100]
b'<!DOCTYPE html>\n<html class="client-nojs" lang="nb" dir="ltr">\n<head>\n<meta charset="UTF-8"/>\n<title'

上面的答案不起作用,因为他在处理请求后进行编码,而您在处理请求时会收到错误。

关于python - 使用urllib读取url时出现编码错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39229439/

10-13 00:58