繁体   English   中英

UTF-8 百分比编码和 python

[英]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.pyutf-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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM