Saya tahu tentang skema% uxxxx non-standar tetapi tampaknya itu bukan pilihan yang bijaksana karena skema tersebut telah ditolak oleh W3C.
Beberapa contoh menarik:
Karakter hati. Jika saya mengetik ini di browser saya:
http://www.google.com/search?q=♥
Kemudian salin dan tempel, saya melihat URL ini
http://www.google.com/search?q=%E2%99%A5
yang membuatnya tampak seperti Firefox (atau Safari) yang melakukan ini.
urllib.quote_plus(x.encode("latin-1"))
'%E2%99%A5'
yang masuk akal, kecuali untuk hal-hal yang tidak dapat dikodekan dalam Latin-1, seperti karakter titik tiga.
…
Jika saya mengetik URL
http://www.google.com/search?q=…
ke browser saya lalu salin dan tempel, saya mengerti
http://www.google.com/search?q=%E2%80%A6
kembali. Yang tampaknya merupakan hasil dari melakukan
urllib.quote_plus(x.encode("utf-8"))
yang masuk akal karena… tidak dapat dikodekan dengan Latin-1.
Tetapi kemudian tidak jelas bagi saya bagaimana browser tahu apakah akan memecahkan kode dengan UTF-8 atau Latin-1.
Karena ini sepertinya ambigu:
In [67]: u"…".encode('utf-8').decode('latin-1')
Out[67]: u'\xc3\xa2\xc2\x80\xc2\xa6'
berfungsi, jadi saya tidak tahu bagaimana browser mengetahui apakah akan memecahkan kode itu dengan UTF-8 atau Latin-1.
Apa hal yang benar untuk dilakukan dengan karakter khusus yang perlu saya tangani?