繁体   English   中英

如何在python中编码unicode字符?

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

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