使用python进行简单的ascii url编码
看看这个:使用python进行简单的ascii url编码,python,urlencode,turbogears,turbogears2,Python,Urlencode,Turbogears,Turbogears2,看看这个: import urllib print urllib.urlencode(dict(bla='Ã')) 输出是 bla=%C3%BC 我想要的很简单,我想要ascii而不是utf-8的输出,所以我需要输出: bla=%C3 如果我尝试: urllib.urlencode(dict(bla='Ã'.decode('iso-8859-1'))) 无法工作我所有的python文件都是utf-8编码的: “ascii”编解码器无法对位置0-1中的字符进行编码:序号不在范围128中 在
import urllib
print urllib.urlencode(dict(bla='Ã'))
输出是
bla=%C3%BC
我想要的很简单,我想要ascii而不是utf-8的输出,所以我需要输出:
bla=%C3
如果我尝试:
urllib.urlencode(dict(bla='Ã'.decode('iso-8859-1')))
无法工作我所有的python文件都是utf-8编码的:
“ascii”编解码器无法对位置0-1中的字符进行编码:序号不在范围128中
在生产中,输入是统一编码的。如果您的输入实际上是UTF-8,并且您希望iso-8859-1作为非ASCII的输出,那么您需要的是:
'ñ'.decode('utf-8').encode('iso-8859-1')
如果您的输入实际上是UTF-8,并且希望iso-8859-1作为非ASCII的输出,那么您需要的是:
'ñ'.decode('utf-8').encode('iso-8859-1')
我希望输出为ascii格式,而不是utf-8格式
这不是ASCII,它没有映射到0x80以上的字符。你说的是ISO-8859-1,或者可能是代码页1252——基于它的Windows编码
'Ã'.decode('iso-8859-1')
这取决于你在源代码中保存字符Ã的编码,不是吗?听起来您的文本编辑器已将其保存为UTF-8。这是一件好事,因为像ISO-8859-1这样的特定于语言环境的编码需要尽快消失
告诉Python您保存的源文件是UTF-8格式的,如下所示:
或者,如果您不想遇到这种麻烦,请使用反斜杠转义:
urllib.quote(u'\u00C3'.encode('iso-8859-1')) # -> %C3
尽管如此,现代webapp的输入应该使用UTF-8,而不是ISO-8859-1/cp1252
我希望输出为ascii格式,而不是utf-8格式
这不是ASCII,它没有映射到0x80以上的字符。你说的是ISO-8859-1,或者可能是代码页1252——基于它的Windows编码
'Ã'.decode('iso-8859-1')
这取决于你在源代码中保存字符Ã的编码,不是吗?听起来您的文本编辑器已将其保存为UTF-8。这是一件好事,因为像ISO-8859-1这样的特定于语言环境的编码需要尽快消失
告诉Python您保存的源文件是UTF-8格式的,如下所示:
或者,如果您不想遇到这种麻烦,请使用反斜杠转义:
urllib.quote(u'\u00C3'.encode('iso-8859-1')) # -> %C3
尽管如此,无论哪种方式,现代网络应用程序都应该使用UTF-8作为输入,而不是ISO-8859-1/cp1252。非常好的工作方式是:
import unicodedata
unicodedata.normalize('NFKD', 'Ã'.decode('UTF-8')).encode('ascii', 'ignore')
非常好的工作方式是:
import unicodedata
unicodedata.normalize('NFKD', 'Ã'.decode('UTF-8')).encode('ascii', 'ignore')
看看:
就你而言:
bla='Ã'
print unidecode(bla)
'A'
这是一个第三方库,可通过以下方式轻松安装:
$ git clone http://code.zemanta.com/tsolc/git/unidecode
$ cd unidecode
$ python setup.py install
看看:
就你而言:
bla='Ã'
print unidecode(bla)
'A'
这是一个第三方库,可通过以下方式轻松安装:
$ git clone http://code.zemanta.com/tsolc/git/unidecode
$ cd unidecode
$ python setup.py install
感谢所有的解决方案。你们都集中到同一点上。 我修改了正确的代码,弄得一团糟
.encode('iso-8859-1')
到
返回到。对“iso-8859-1”进行编码,它就能工作。多亏了所有的解决方案。你们都集中到同一点上。 我修改了正确的代码,弄得一团糟
.encode('iso-8859-1')
到
返回到。对“iso-8859-1”进行编码,它就会工作。包是
Unicode文本的US-ASCII音译。
Python unidecode的改进版本,即Sean M.Burke的Python文本端口::unidecode Perl模块
然后在python中
打印一份。包装是
Unicode文本的US-ASCII音译。
Python unidecode的改进版本,即Sean M.Burke的Python文本端口::unidecode Perl模块
然后在python中
打印A。A+tilde转换为ASCII是否为0xC3?我认为不值得重新表述这个标题。ASCII不包含“Ô字符。bla=%C3%BC不包含非ASCII字符。你需要解释你真正想要/需要什么,以及为什么你认为你需要它。@mykhal:U+00C3是拉丁文大写字母A加上波浪号\xC3在ISO-8859-1和cp1252中映射到U+00C3。你想说什么?转换成ASCII的+tilde是0xC3?我认为不值得重新表述这个标题。ASCII不包含“Ô字符。bla=%C3%BC不包含非ASCII字符。你需要解释你真正想要/需要什么,以及为什么你认为你需要它。@mykhal:U+00C3是拉丁文大写字母A加上波浪号\xC3在ISO-8859-1和cp1252中映射到U+00C3。你想说什么?整个webapp已经是utf-8了,但是我尝试通信的基于外部url的webservice无法识别%C3%BC,只能识别%C3。您的解决方案工作正常。整个Web应用程序已经是utf-8,但我尝试通信的基于外部url的Web服务无法识别%C3%BC,只能识别%C3。你的解决方案很好用。