我正在尝试让python给我百分比编码的字符串。我正在交互的API(我认为它使用的是百分比编码的UTF-8),为î提供了%c3%ae。但是,python的urllib.quote给出了%3F。
import urllib
mystring = "î"
print urllib.quote(mystring)
print urllib.quote_plus(mystring)
print urllib.quote(mystring.encode('utf-8'))
感谢任何帮助。
您的文件在引用之前必须将您的字符串编码为utf-8
,并且该字符串应为unicode。另外,您还必须在coding
部分中为源文件指定适当的文件编码:
# -*- coding: utf-8 -*-
import urllib
s = u'î'
print urllib.quote(s.encode('utf-8'))
给我输出:
%C3%AE
这是因为您没有声明文件正在使用的编码,所以Python会从您当前的locale
配置中推断出它。我建议您这样做:
# -*- coding: utf-8 -*-
import urllib
mystring = "î"
print urllib.quote(mystring)
print urllib.quote_plus(mystring)
还有确保file.py
已以utf-8
编码保存到磁盘。
对我来说,产生:
$python ex.py
%C3%AE
%C3%AE
警告的夫妇。如果您从解释程序尝试此操作,则如果您的控制台编码不是# -*- coding: utf-8 -*-
,则utf-8
将不起作用。相反,您应该将其更改为控制台使用的任何编码:# -*- coding: (encoding here) -*-
。
然后,您应该使用Unicode
方法将字符串解码为decode
,并将您的控制台使用的编码名称作为参数传递给它:
mystring = "î".decode('<your encoding>')
然后将其传递给编码为urllib
的utf-8
:
print urllib.quote(mystring.encode('utf-8'))
print urllib.quote_plus(mystring.encode('utf-8'))
希望这会有所帮助!