[英]how to encode unicode characters in python?
我正在尝试将unicode字符编码为可以使用Python 2编码并发送到url的特定格式。
input = u"í"
required_output = "%CC%81"
import urllib
print urllib.quote('í') = "%C3%AD"
有没有一种如图所示的编码方式,所以我可以获得所需的输出?
>>> import unicodedata, urllib
>>> urllib.quote(unicodedata.normalize("NFD", u"í").encode('utf8'))
'i%CC%81'
您使用ACUTE编码了U + 00ED拉丁文小写字母I ,而不是将组合的急性字符编码为单独的i
ASCII字母,从而将其编码为CC 81,因此U + 0301 COMBINING ACUTE ACCENT 。
如果将输入数据组合在一起 ,则必须将其分解为NFD或NFKD范式:
normalized = unicodedata.normalize("NFD", input).encode('utf8')
print urllib.quote(normalized)
有关常规格式,请参见Wikipedia Unicode文章部分 。
一般来说, 对于URL ,您应该真正遵循NFC正常格式! 允许非ASCII数据的国际化资源标识符(IRI)通过使用NFC常规格式转换为URL,因此%C3%AD
是正确的格式,而不是i%CC%81
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.