विकसित चश्मा पढ़ने से सालों में मैंने माना था कि RFC 3986 अंततः बचने के ऑक्टेट अनुक्रमों के लिए यूटीएफ -8 एन्कोडिंग पर बस गया था। यही है, अगर मेरे यूआरआई में %XX%YY%ZZ
है, तो मैं डीकोडेड ऑक्टेट्स (योजना-विशिष्ट भाग में किसी भी यूआरआई के लिए) का अनुक्रम ले सकता हूं और परिणामस्वरूप बाइट्स को यूटीएफ -8 के रूप में समझ सकता हूं कि यह पता लगाने के लिए कि किस डिकोडेड जानकारी का इरादा था। व्यावहारिक रूप से, मैं जावास्क्रिप्ट decodeURIComponent()
पर कॉल कर सकता हूं जो मेरे लिए यह डिकोडिंग स्वचालित रूप से करता है।डेटा में वर्णसेट यूआरआई
तब मैं data:
यूआरआई, RFC 2397 है, जो एक charset
तर्क है, जो (स्वाभाविक रूप से) इनकोडिंग डेटा के चारसेट इंगित करता है भी शामिल है के लिए कल्पना पढ़ें। लेकिन यह कैसे काम करता है? अगर मेरे पास data:
यूआरआई में दो-ऑक्टेट एन्कोडेड अनुक्रम %XX%YY
है, तो charset=iso-8859-1
इंगित करता है कि दो डीकोडेड ऑक्टेट्स को यूटीएफ -8 अनुक्रम के रूप में व्याख्या नहीं किया जाना चाहिए, लेकिन दो अलग लैटिन वर्णों के रूप में (जैसा कि आईएसओ में प्रत्येक बाइट -885 9 -1 एक चरित्र का प्रतिनिधित्व करता है)? आरएफसी 2397 इस से संकेत मिलता है, के रूप में यह "ग्रीक [वैसा] वर्ण" का एक उदाहरण देता है लगता है:
data:text/plain;charset=iso-8859-7,%be%fg%be
लेकिन इसका मतलब है कि जावास्क्रिप्ट decodeURIComponent()
(जो UTF-8 एन्कोडेड ओक्टेट्स मान लिया गया है) निकालने के लिए इस्तेमाल नहीं किया जा सकता एक डेटा यूआरआई से एक स्ट्रिंग, सही? क्या इसका मतलब है कि अगर डेटा यूआरएफ -8 के अलावा कुछ है तो मुझे डेटा यूआरआई के लिए अपना खुद का डिकोडिंग बनाना होगा?
इसके अलावा, क्या इसका मतलब यह है कि आरएफसी 23 9 7 अब आरएफसी 3 9 86 के साथ संघर्ष में है, जो इंगित करता है कि यूटीएफ -8 माना जाता है? या आरएफसी 3 9 86 में केवल "नई यूआरआई योजना" का संदर्भ है, जिसका अर्थ है कि data:
यूआरआई योजना में दादा हो गया है और यह निर्धारित करने के लिए अपनी तकनीक है कि एन्कोडेड ऑक्टेट्स का क्या अर्थ है?
इस समय मेरे लिए सबसे अच्छा अनुमान है कि data:
नाटकों अपने नियम से और अगर यह UTF-8 के अलावा किसी अन्य चारसेट इंगित करता है, मैं जावास्क्रिप्ट में decodeURIComponent()
के अलावा कुछ का उपयोग करना होगा है। प्रतिस्थापन विधि पर किसी भी सिफारिश का स्वागत भी किया जाएगा।