我在使用 python 命令行对 URL 中的重音字符进行编码时遇到问题。将我的问题简化为本质,这段代码:
>>> import urllib
>>> print urllib.urlencode({'foo' : raw_input('> ')})
> áéíóúñ
在 Mac 命令行中打印此内容:
foo=%C3%A1%C3%A9%C3%AD%C3%B3%C3%BA%C3%B1
但是相同的代码在 Windows 命令行中打印此内容:
foo=%A0%82%A1%A2%A3%A4
mac 结果是正确的,并且字符根据需要进行编码;但在 Windows 中我收到一堆乱码。
我猜问题出在Windows编码字符的方式上,但我一直没能找到解决方案;如果你能帮助我,我将非常感激。提前致谢!
最佳答案
您可以使用显式编码来获得一致的结果。
>>> str = u"áéíóúñ"
>>> import urllib
>>> urllib.urlencode({'foo':str.encode('utf-8')})
'foo=%C3%A1%C3%A9%C3%AD%C3%B3%C3%BA%C3%B1'
但是,您需要首先确保您的字符串采用 unicode,因此如果不是,则可能需要解码,例如 raw_input().decode('latin1') 或 raw_input().decode('utf-8')
我相信输入编码取决于控制台的区域设置,因此它是特定于系统的。
编辑:unicode(str) 也应该使用区域设置编码来转换为 unicode,因此这可能是一个解决方案。
关于python - 使用 python 编码重音字符时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3315095/