我在使用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编码字符的方式上,但是我找不到解决方案。如果您能帮助我,我将不胜感激。提前致谢!
最佳答案
Windows命令行在美国Windows中使用cp437编码。您需要utf-8:
>>> import sys
>>> sys.stdin.encoding
'cp437'
>>> print urllib.urlencode({'foo':raw_input('> ').decode('cp437').encode('utf8')})
> áéíóúñ
foo=%C3%A1%C3%A9%C3%AD%C3%B3%C3%BA%C3%B1
关于python - 使用python编码重音字符时出现问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3315095/