[英]UTF-8 percentage encoding and python
我试图让 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
几个警告。 如果您从解释器中尝试此操作,如果您的控制台编码不是utf-8
,则# -*- coding: utf-8 -*-
将不起作用。 相反,您应该将其更改为您的控制台使用的任何编码: # -*- coding: (encoding here) -*-
。
然后,您应该使用decode
方法将您的字符串解码为Unicode
,并将您的控制台用作参数的编码名称传递给它:
mystring = "î".decode('<your encoding>')
然后将其传递给编码为utf-8
urllib
:
print urllib.quote(mystring.encode('utf-8'))
print urllib.quote_plus(mystring.encode('utf-8'))
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.