मुझे गैर-मानक% uxxxx योजना का पता है, लेकिन यह एक बुद्धिमान विकल्प नहीं लगता है क्योंकि इस योजना को W3C द्वारा अस्वीकार कर दिया गया है।
कुछ दिलचस्प उदाहरण:
दिल का चरित्र। यदि मैं इसे अपने ब्राउज़र में टाइप करता हूँ:
http://www.google.com/search?q=♥
फिर इसे कॉपी और पेस्ट करें, मुझे यह URL दिखाई दे रहा है
http://www.google.com/search?q=%E2%99%A5
जिससे यह प्रतीत होता है कि फ़ायरफ़ॉक्स (या सफारी) ऐसा कर रहा है।
urllib.quote_plus(x.encode("latin-1"))
'%E2%99%A5'
ट्रिपल डॉट कैरेक्टर की तरह लैटिन -1 में एनकोड की जा सकने वाली चीजों को छोड़कर, जो समझ में आता है।
…
अगर मैं URL टाइप करता हूँ
http://www.google.com/search?q=…
मेरे ब्राउज़र में फिर कॉपी और पेस्ट करें, मुझे मिलता है
http://www.google.com/search?q=%E2%80%A6
वापस। जो करने का परिणाम प्रतीत होता है
urllib.quote_plus(x.encode("utf-8"))
जो समझ में आता है ... लैटिन -1 के साथ एन्कोड नहीं किया जा सकता है।
लेकिन फिर यह मेरे लिए स्पष्ट नहीं है कि ब्राउज़र कैसे जानता है कि क्या यूटीएफ -8 या लैटिन -1 के साथ डिकोड करना है।
चूंकि यह अस्पष्ट प्रतीत होता है:
In [67]: u"…".encode('utf-8').decode('latin-1')
Out[67]: u'\xc3\xa2\xc2\x80\xc2\xa6'
काम करता है, इसलिए मुझे नहीं पता कि ब्राउज़र कैसे पता लगाता है कि उसे UTF-8 या लैटिन -1 के साथ डिकोड करना है या नहीं।
मुझे जिन विशेष पात्रों से निपटने की आवश्यकता है, उनके साथ क्या करना सही है?