python - urllib.parse.quote 不会采用 utf8

标签 python python-3.x urllib

我正在尝试按预期使用 urllib.parse.quote,但无法正常工作。我什至尝试了文档中给出的示例

Example: quote('/El Niño/') yields '/El%20Ni%C3%B1o/'.

如果我尝试这样做,会发生以下情况。

quote('/El Niño/')
  File "<stdin>", line 0

    ^
SyntaxError: 'utf-8' codec can't decode byte 0xf1 in position 13: invalid continuation byte

有人知道哪里出了问题吗?我正在使用 Python 3.2.3

PS:文档链接 http://docs.python.org/3.2/library/urllib.parse.html

最佳答案

\xf1 是一个 latin-1 编码的 ñ

>>> print(b'\xf1'.decode("latin-1"))
ñ

..不是 utf-8 编码的字符,如 Python 3 assumes by default :

>>> print(b'\xf1'.decode("utf-8"))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf1 in position 0: unexpected end of data

意思是,您编写的 .py 文件或运行 Python shell 的终端存在编码问题 - 它向 Python 提供 latin-1 编码数据,而不是 utf-8

关于python - urllib.parse.quote 不会采用 utf8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21810341/

相关文章:

python - 如何使用 urllib 发送 cookie

python - 在python中获取日志级别

python - 一次播放很多声音

python - 在 Mac OS 上使用 virtualenvwrapper 在 python 版本之间切换

python - 当一个线程正在运行时阻塞其他线程

python - 解析 HTML 未输出所需数据(FedEx 的跟踪信息)

Python:KeyError/IOError 与 urllib.urlopen

python - Numpy 子类属性切片

python - 使用mmap找出缓存未命中

windows - 导入 matplotlib.pyplot 时出错(在 Anaconda3 for Windows 10 Home 64-bit PC 上)