簡體   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