"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > UTF-8 एन्कोडिंग को संभालते समय जावास्क्रिप्ट में बेस 64 स्ट्रिंग्स को कैसे डिकोड करें?

UTF-8 एन्कोडिंग को संभालते समय जावास्क्रिप्ट में बेस 64 स्ट्रिंग्स को कैसे डिकोड करें?

2024-11-09 को प्रकाशित
ब्राउज़ करें:763

How to Decode Base64 Strings in JavaScript While Handling UTF-8 Encoding?

जावास्क्रिप्ट एटोब फ़ंक्शन का उपयोग करके बेस64 को डिकोड करें: यूटीएफ-8 को संभालना

जावास्क्रिप्ट का एटोब() फ़ंक्शन बेस64-एन्कोडेड स्ट्रिंग्स को डिकोड करने के लिए डिज़ाइन किया गया है। उपयोगकर्ताओं को UTF-8 एन्कोडेड स्ट्रिंग्स को डिकोड करते समय समस्याओं का सामना करना पड़ सकता है, जिसके परिणामस्वरूप उचित UTF-8 प्रतिनिधित्व के बजाय ASCII-एन्कोडेड वर्ण हो सकते हैं।

चुनौती: यूनिकोड समस्या को समझना

बेस64 इनपुट के रूप में बाइनरी डेटा की अपेक्षा करता है , और जावास्क्रिप्ट एक बाइट पर कब्जा करने वाले वर्णों वाले स्ट्रिंग को बाइनरी डेटा मानता है। हालाँकि, UTF-8 एन्कोडेड स्ट्रिंग्स में एक से अधिक बाइट रखने वाले कैरेक्टर, एन्कोडिंग के दौरान अपवाद ट्रिगर करते हैं। &&&]

यूटीएफ-8 को बाइनरी में एन्कोड करना

फ़ंक्शन टूबाइनरी(स्ट्रिंग) { स्थिरांक कोडयूनिट्स = नया Uint16Array(string.length); के लिए (मान लीजिए i = 0; i बाइनरी को यूटीएफ-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