为什么这两个字符串操作产生不同的输出?

时间:2017-02-15 15:18:54

标签: python-3.x encoding

我有一个程序,它抓取存储在本地文件系统中的变量并将它们存储在变量中。然后,我尝试对它们进行URL编码,以便在Web API调用中使用。但是我注意到我的几个调用产生了错误,经过研究后看来编码没有按预期工作。

此字符串编码可生成正确的结果。

newstring = urllib.parse.quote(u"Müller".encode('utf8'))
print(newstring)

输出

M%C3%83%C2%BCller

但是,此代码不会产生正确的输出

string2 = "Müller"
newstring2 = urllib.parse.quote(string2.encode('utf8'))
print(string2)

输出

Müller

知道这里的区别是什么以及我如何修复它以便第二位代码产生准确的结果?

1 个答案:

答案 0 :(得分:1)

也许你打算在第二个例子中写print(newstring2)?这将产生与第一个例子中相同的输出。

In [1]: string2 = "Müller"
In [2]: print(urllib.parse.quote(string2.encode('utf8')))
M%C3%BCller