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