我在使用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/

10-13 04:22