我正在尝试按预期使用 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/