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

जावास्क्रिप्ट का `एटोब` यूटीएफ-8 बेस64 स्ट्रिंग्स को ठीक से डीकोड करने में विफल क्यों होता है?

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

Why does Javascript\'s `atob` fail to decode UTF-8 base64 strings properly?

बेस64 को डीकोड करने के लिए जावास्क्रिप्ट के एटोब का उपयोग करने से यूटीएफ-8 स्ट्रिंग्स ठीक से डीकोड नहीं होती हैं

जावास्क्रिप्ट का एटीओबी एनकोड किए गए बेस64 स्ट्रिंग्स को ठीक से डीकोड कर सकता है ASCII वर्णों के साथ, उदाहरण के लिए, window.atob('YQ==') ASCII लौटाएगा अक्षर 'ए'. हालाँकि, यह UTF-8 यूनिकोड वर्णों के साथ एन्कोड किए गए बेस 64 स्ट्रिंग्स को ठीक से डिकोड नहीं करेगा, उदाहरण के लिए, window.atob('4pyTIMOgIGxhIG1vZGU=') '✓ à la mode' के बजाय '⢠à la mode' लौटाएगा। .

UTF-8 के साथ एन्कोड की गई बेस64 स्ट्रिंग को ठीक से डिकोड करने के लिए, हमें एस्केप का उपयोग करने की आवश्यकता है और अनस्केप फ़ंक्शन। इस स्थिति में, window.atob(unescape(encodeURIComponent('✓ à la mode'))) '4pyTIMOgIGxhIG1vZGU=' लौटाएगा और window.atob('4pyTIMOgIGxhIG1vZGU=') '✓ à la mode' लौटाएगा।

आने वाली बेस64-एनकोडेड स्ट्रीम को संभालने का एक और विकल्प इसे TextDecoder वर्ग का उपयोग करने के लिए utf-8 के रूप में डिकोड किया गया है। यह क्लास बेस64-एन्कोडेड स्ट्रिंग को यूटीएफ-8 स्ट्रिंग में डीकोड करने का एक तरीका प्रदान करता है। इसका उपयोग कैसे करें इसका एक उदाहरण यहां दिया गया है:

const text = '4pyTIMOgIGxhIG1vZGU=';
const decoder = new TextDecoder('utf-8');
const decodedText = decoder.decode(Uint8Array.from(atob(text)));
console.log(decodedText); // '✓ à la mode'
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3