जावास्क्रिप्ट का एटोब() फ़ंक्शन बेस64-एन्कोडेड स्ट्रिंग्स को डिकोड करने के लिए डिज़ाइन किया गया है। उपयोगकर्ताओं को UTF-8 एन्कोडेड स्ट्रिंग्स को डिकोड करते समय समस्याओं का सामना करना पड़ सकता है, जिसके परिणामस्वरूप उचित UTF-8 प्रतिनिधित्व के बजाय ASCII-एन्कोडेड वर्ण हो सकते हैं।
बेस64 इनपुट के रूप में बाइनरी डेटा की अपेक्षा करता है , और जावास्क्रिप्ट एक बाइट पर कब्जा करने वाले वर्णों वाले स्ट्रिंग को बाइनरी डेटा मानता है। हालाँकि, UTF-8 एन्कोडेड स्ट्रिंग्स में एक से अधिक बाइट रखने वाले कैरेक्टर, एन्कोडिंग के दौरान अपवाद ट्रिगर करते हैं। &&&]
function toBinary(string) { const codeUnits = new Uint16Array(string.length); for (let i = 0; i बाइनरी से फ़ंक्शन (एनकोडेड) { स्थिरांक बाइनरी = एटोब (एन्कोडेड); स्थिरांक बाइट्स = नया Uint8Array(बाइनरी.लेंथ); के लिए (मान लीजिए i = 0; i यह समाधान मूल यूटीएफ-8 स्ट्रिंग को बाइनरी प्रतिनिधित्व में परिवर्तित करता है, यूटीएफ-16 एन्कोडिंग को संरक्षित करता है, जो जावास्क्रिप्ट में एक मूल प्रतिनिधित्व है।समाधान 2: एएससीआईआई बेस64 इंटरऑपरेबिलिटीfunction toBinary(string) { const codeUnits = new Uint16Array(string.length); for (let i = 0; i यूटीएफ-8 इंटरऑपरेबिलिटी पर केंद्रित एक वैकल्पिक समाधान प्लेनटेक्स्ट बेस64 को बनाए रखना है स्ट्रिंग्स:एनकोडिंग UTF-8 से बेस64
फ़ंक्शन b64EncodeUnicode(str) { वापसी btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, फ़ंक्शन toSolidBytes(मैच, p1) { वापसी String.fromCharCode('0x' p1); })); }डिकोडिंग बेस64 से यूटीएफ-8
function toBinary(string) { const codeUnits = new Uint16Array(string.length); for (let i = 0; i फ़ंक्शन b64DecodeUnicode(str) { वापसी decodeURIComponent(atob(str).split('').map(function(c) { वापसी '%' ('00' c.charCodeAt(0).toString(16)).slice(-2); })।जोड़ना('')); }यह समाधान यूटीएफ-8 एन्कोडेड स्ट्रिंग्स को उनके प्रतिनिधित्व में बदलाव किए बिना कुशलतापूर्वक संभालता है। फ़ंक्शन b64EncodeUnicode(str) { वापसी btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function(match, p1) { वापसी String.fromCharCode(parseInt(p1, 16)) })) } // डिकोडिंग बेस64 ⇢ यूटीएफ-8 फ़ंक्शन b64DecodeUnicode(str) { वापसी decodeURIComponent(Array.prototype.map.call(atob(str), function(c) { वापसी '%' ('00' c.charCodeAt(0).toString(16)).slice(-2) })।जोड़ना('')) }
ऐतिहासिक समाधान (अस्वीकृत)function toBinary(string) { const codeUnits = new Uint16Array(string.length); for (let i = 0; i फ़ंक्शन utf8_to_b64( str ) { वापसी window.btoa(unescape(encodeURIComponent(str ))); } फ़ंक्शन b64_to_utf8(str) { वापसी decodeURIComponent(escape(window.atob( str ))); }अभी भी कार्यात्मक होते हुए भी, यह दृष्टिकोण अब आधुनिक ब्राउज़रों में अप्रचलित है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3