जावास्क्रिप्ट में UTF-8 को एनकोड/डीकोड कैसे करें

Javaskripta Mem Utf 8 Ko Enakoda Dikoda Kaise Karem



UTF-8 का अर्थ है ' यूनिकोड परिवर्तन प्रारूप 8-बिट ” और एक महान एन्कोडिंग प्रारूप से मेल खाता है जो यह सुनिश्चित करता है कि उपयोग की गई भाषा/स्क्रिप्ट के बावजूद सभी उपकरणों पर वर्ण उचित रूप से प्रदर्शित हों। साथ ही, यह प्रारूप वेब पेजों के लिए सहायक है और इसका उपयोग इंटरनेट पर टेक्स्ट डेटा के भंडारण, प्रसंस्करण और प्रसारण के लिए किया जाता है।

यह ट्यूटोरियल नीचे बताए गए सामग्री क्षेत्रों को शामिल करता है:







UTF-8 एन्कोडिंग क्या है?

UTF-8 एन्कोडिंग 'यूनिकोड वर्णों के अनुक्रम को 8-बिट बाइट्स वाली एन्कोडेड स्ट्रिंग में बदलने की प्रक्रिया है। यह एन्कोडिंग अन्य कैरेक्टर एनकोडिंग की तुलना में वर्णों की एक बड़ी श्रृंखला का प्रतिनिधित्व कर सकती है।



UTF-8 एन्कोडिंग कैसे काम करती है?

UTF-8 में वर्णों का प्रतिनिधित्व करते समय, प्रत्येक व्यक्तिगत कोड बिंदु को एक या अधिक बाइट्स द्वारा दर्शाया जाता है। ASCII श्रेणी में कोड बिंदुओं का विवरण निम्नलिखित है:



  • एक एकल बाइट ASCII रेंज (0-127) में कोड बिंदुओं का प्रतिनिधित्व करता है।
  • दो बाइट्स ASCII रेंज (128-2047) में कोड बिंदुओं का प्रतिनिधित्व करते हैं।
  • तीन बाइट्स ASCII रेंज (2048-65535) में कोड बिंदुओं का प्रतिनिधित्व करते हैं।
  • चार बाइट्स ASCII रेंज (65536-1114111) में कोड बिंदुओं का प्रतिनिधित्व करते हैं।

यह ऐसा है कि 'की पहली बाइट यूटीएफ-8 'अनुक्रम को' के रूप में जाना जाता है नेता बाइट जो अनुक्रम में बाइट्स की संख्या और चरित्र के कोड बिंदु मान के बारे में जानकारी देता है।
एकल, दो, तीन और चार बाइट्स अनुक्रम के लिए 'लीडर बाइट' क्रमशः (0-127), (194-233), (224-239), और (240-247) की सीमा में है।





क्रम में शेष बाइट्स को '' कहा जाता है अनुगामी बाइट्स. दो, तीन और चार-बाइट अनुक्रम के सभी बाइट्स (128-191) श्रेणी में हैं। यह ऐसा है कि अग्रणी और अनुगामी बाइट्स का विश्लेषण करके चरित्र के कोड बिंदु मान की गणना की जा सकती है।

कोड प्वाइंट मानों की गणना कैसे की जाती है?

विभिन्न बाइट अनुक्रमों के लिए कोड बिंदु मानों की गणना निम्नानुसार की जाती है:



  • दो-बाइट अनुक्रम: कोड बिंदु '((lb - 194) * 64) + (tb - 128)' के बराबर है।
  • तीन-बाइट्स अनुक्रम : कोड बिंदु '((lb – 224) * 4096) + ((tb1 – 128) * 64) + (tb2 – 128)' के बराबर है।
  • चार-बाइट्स अनुक्रम : कोड बिंदु '((lb – 240) * 262144) + ((tb1 – 128) * 4096) + ((tb2 – 128) * 64) + (tb3 – 128)' के बराबर है।

जावास्क्रिप्ट में UTF-8 को एनकोड/डीकोड कैसे करें?

जावास्क्रिप्ट में UTF-8 की एन्कोडिंग और डिकोडिंग नीचे बताए गए तरीकों से की जा सकती है:

  • एनोडयूआरआईकंपोनेंट() ' और ' डिकोडयूआरआईकंपोनेंट() “तरीके.
  • एनकोडयूआरआई() ' और ' डिकोडयूआरआई() “तरीके.
  • नियमित अभिव्यक्ति।

दृष्टिकोण 1: 'encodeURIComponent()' और 'decodeURIComponent()' विधियों का उपयोग करके जावास्क्रिप्ट में UTF-8 को एनकोड/डीकोड करें

एनकोडयूआरआईकंपोनेंट() 'विधि एक यूआरआई घटक को एन्कोड करती है। साथ ही, यह विशेष वर्णों जैसे @, &, :, +, $, #, आदि को एन्कोड कर सकता है। डिकोडयूआरआईकंपोनेंट() हालाँकि, विधि, एक यूआरआई घटक को डीकोड करती है। इन विधियों का उपयोग पारित मानों को क्रमशः यूटीएफ-8 में एनकोड और डीकोड करने के लिए किया जा सकता है।

सिंटेक्स(“encodeURIComponent()” विधि)

encodeURIComponent ( एक्स )

दिए गए वाक्यविन्यास में, “ एक्स ” यूआरआई को एन्कोड किए जाने का संकेत देता है।

प्रतिलाभ की मात्रा
इस विधि ने एक एन्कोडेड यूआरआई को एक स्ट्रिंग के रूप में पुनः प्राप्त किया।

सिंटैक्स ('decodeURIComponent()' विधि)

decodeURIComponent ( एक्स )

यहाँ, ' एक्स ” डिकोड किए जाने वाले यूआरआई को संदर्भित करता है।

प्रतिलाभ की मात्रा
यह विधि डिकोडेड यूआरआई देती है।

उदाहरण 1: जावास्क्रिप्ट में यूटीएफ-8 एन्कोडिंग
यह उदाहरण उपयोगकर्ता द्वारा परिभाषित फ़ंक्शन की सहायता से पारित स्ट्रिंग को एन्कोडेड यूटीएफ -8 मान में एन्कोड करता है:

समारोह encode_utf8 ( एक्स ) {
वापस करना अनस्केप ( encodeURIComponent ( एक्स ) ) ;
}
लेट वैल = 'यहाँ' ;
सांत्वना देना। लकड़ी का लट्ठा ( 'दिया गया मूल्य ->' + वैल ) ;
एनकोडवैल दें = encode_utf8 ( वैल ) ;
सांत्वना देना। लकड़ी का लट्ठा ( 'एन्कोडेड मान ->' + एन्कोडवैल ) ;

इन कोड पंक्तियों में, नीचे दिए गए चरण निष्पादित करें:

  • सबसे पहले, फ़ंक्शन को परिभाषित करें ' एनकोड_यूटीएफ8() ' जो निर्दिष्ट पैरामीटर द्वारा दर्शाई गई पारित स्ट्रिंग को एन्कोड करता है।
  • यह एन्कोडिंग ' द्वारा किया जाता है एनकोडयूआरआईकंपोनेंट() फ़ंक्शन परिभाषा में विधि।
  • टिप्पणी: अनस्केप() 'विधि किसी भी एस्केप अनुक्रम को उसके द्वारा दर्शाए गए चरित्र से बदल देती है।
  • उसके बाद, एन्कोड किए जाने वाले मान को प्रारंभ करें और उसे प्रदर्शित करें।
  • अब, परिभाषित फ़ंक्शन को लागू करें और इस मान को UTF-8 में एन्कोड करने के लिए वर्णों के परिभाषित संयोजन को इसके तर्क के रूप में पास करें।

उत्पादन

यहां, यह निहित किया जा सकता है कि अलग-अलग वर्णों को तदनुसार UTF-8 में दर्शाया और एन्कोड किया गया है।

उदाहरण 2: जावास्क्रिप्ट में यूटीएफ-8 को डिकोड करना
नीचे दिया गया कोड प्रदर्शन पारित मूल्य (वर्णों के रूप में) को एक एन्कोडेड यूटीएफ -8 प्रतिनिधित्व में डिकोड करता है:

समारोह डिकोड_यूटीएफ8 ( एक्स ) {
वापस करना decodeURIComponent ( पलायन ( एक्स ) ) ;
}
लेट वैल = 'à çè' ;
सांत्वना देना। लकड़ी का लट्ठा ( 'दिया गया मूल्य ->' + वैल ) ;
डिकोड करने दो = डिकोड_यूटीएफ8 ( वैल ) ;
सांत्वना देना। लकड़ी का लट्ठा ( 'डिकोडेड वैल्यू ->' + गूढ़वाचन करना ) ;

कोड के इस ब्लॉक में:

  • इसी प्रकार, फ़ंक्शन को परिभाषित करें ' डिकोड_utf8() ' जो वर्णों के पारित संयोजन को ' के माध्यम से डिकोड करता है डिकोडयूआरआईकंपोनेंट() ' तरीका।
  • टिप्पणी: पलायन() 'विधि एक नई स्ट्रिंग पुनर्प्राप्त करती है जिसमें विभिन्न वर्णों को हेक्साडेसिमल एस्केप अनुक्रमों द्वारा प्रतिस्थापित किया जाता है।
  • उसके बाद, डिकोड किए जाने वाले वर्णों के संयोजन को निर्दिष्ट करें और UTF-8 को उचित रूप से डिकोड करने के लिए परिभाषित फ़ंक्शन तक पहुंचें।

उत्पादन

यहां, यह निहित किया जा सकता है कि पिछले उदाहरण में एन्कोडेड मान को डिफ़ॉल्ट मान में डिकोड किया गया है।

दृष्टिकोण 2: 'एनकोडयूआरआई()' और 'डीकोडयूआरआई()' विधियों का उपयोग करके जावास्क्रिप्ट में यूटीएफ-8 को एनकोड/डीकोड करें

एनकोडयूआरआई() 'विधि कई वर्णों के प्रत्येक उदाहरण को चरित्र के यूटीएफ -8 एन्कोडिंग का प्रतिनिधित्व करने वाले कई एस्केप अनुक्रमों के साथ प्रतिस्थापित करके एक यूआरआई को एन्कोड करती है। की तुलना में ' एनकोडयूआरआईकंपोनेंट() 'विधि, यह विशेष विधि सीमित वर्णों को एन्कोड करती है।

डिकोडयूआरआई() हालाँकि, विधि, यूआरआई (एन्कोडेड) को डिकोड करती है। इन विधियों को UTF-8 एन्कोडेड मान में वर्णों के संयोजन को एन्कोड और डीकोड करने के लिए संयोजन में लागू किया जा सकता है।

सिंटैक्स(एनकोडयूआरआई() विधि)

encodeURI ( एक्स )

उपरोक्त वाक्यविन्यास में, ' एक्स 'यूआरआई के रूप में एन्कोड किए जाने वाले मान से मेल खाता है।

प्रतिलाभ की मात्रा
यह विधि एन्कोडेड मान को एक स्ट्रिंग के रूप में पुनर्प्राप्त करती है।

सिंटैक्स(डिकोडयूआरआई() विधि)

डिकोडुरि ( एक्स )

यहाँ, ' एक्स ” डिकोड किए जाने वाले एन्कोडेड यूआरआई का प्रतिनिधित्व करता है।

प्रतिलाभ की मात्रा
यह डिकोड किए गए यूआरआई को एक स्ट्रिंग के रूप में लौटाता है।

उदाहरण 1: जावास्क्रिप्ट में यूटीएफ-8 एन्कोडिंग
यह प्रदर्शन वर्णों के पारित संयोजन को एक एन्कोडेड UTF-8 मान में एन्कोड करता है:

समारोह encode_utf8 ( एक्स ) {
वापस करना अनस्केप ( encodeURI ( एक्स ) ) ;
}
लेट वैल = 'यहाँ' ;
सांत्वना देना। लकड़ी का लट्ठा ( 'दिया गया मूल्य ->' + वैल ) ;
एनकोडवैल दें = encode_utf8 ( वैल ) ;
सांत्वना देना। लकड़ी का लट्ठा ( 'एन्कोडेड मान ->' + एन्कोडवैल ) ;

यहां, एन्कोडिंग के लिए आवंटित फ़ंक्शन को परिभाषित करने के तरीकों को याद करें। अब, यूटीएफ -8 एन्कोडेड स्ट्रिंग के रूप में वर्णों के पारित संयोजन का प्रतिनिधित्व करने के लिए 'एनकोडयूआरआई ()' विधि लागू करें। उसके बाद, इसी तरह, मूल्यांकन किए जाने वाले वर्णों को परिभाषित करें और एन्कोडिंग करने के लिए परिभाषित मान को उसके तर्क के रूप में पास करके परिभाषित फ़ंक्शन को लागू करें।

उत्पादन

यहां, यह स्पष्ट है कि वर्णों का पारित संयोजन सफलतापूर्वक एन्कोड किया गया है।

उदाहरण 2: जावास्क्रिप्ट में यूटीएफ-8 को डिकोड करना
नीचे दिया गया कोड प्रदर्शन एन्कोडेड UTF-8 मान को डीकोड करता है (पिछले उदाहरण में):

समारोह डिकोड_यूटीएफ8 ( एक्स ) {
वापस करना डिकोडुरि ( पलायन ( एक्स ) ) ;
}
लेट वैल = 'à çè' ;
सांत्वना देना। लकड़ी का लट्ठा ( 'दिया गया मूल्य ->' + वैल ) ;
डिकोड करने दो = डिकोड_यूटीएफ8 ( वैल ) ;
सांत्वना देना। लकड़ी का लट्ठा ( 'डिकोडेड वैल्यू ->' + गूढ़वाचन करना ) ;

इस कोड के अनुसार, फ़ंक्शन घोषित करें ' डिकोड_utf8() 'जिसमें कहा गया पैरामीटर शामिल है जो' का उपयोग करके डिकोड किए जाने वाले वर्णों के संयोजन का प्रतिनिधित्व करता है डिकोडयूआरआई() ' तरीका। अब, डिकोड किए जाने वाले मान को निर्दिष्ट करें और डिकोडिंग को लागू करने के लिए परिभाषित फ़ंक्शन को लागू करें। यूटीएफ-8 'प्रतिनिधित्व.

उत्पादन

इस परिणाम का तात्पर्य यह है कि पहले से एन्कोड किया गया मान तदनुसार तय किया गया है।

दृष्टिकोण 3: रेगुलर एक्सप्रेशन का उपयोग करके जावास्क्रिप्ट में यूटीएफ-8 को एनकोड/डीकोड करें

यह दृष्टिकोण एन्कोडिंग को इस प्रकार लागू करता है कि मल्टी-बाइट यूनिकोड स्ट्रिंग को यूटीएफ-8 मल्टीपल सिंगल-बाइट वर्णों में एन्कोड किया जाता है। इसी तरह, डिकोडिंग इस तरह की जाती है कि एन्कोडेड स्ट्रिंग को मल्टी-बाइट यूनिकोड वर्णों में वापस डिकोड किया जाता है।

उदाहरण 1: जावास्क्रिप्ट में यूटीएफ-8 एन्कोडिंग
नीचे दिया गया कोड मल्टी-बाइट यूनिकोड स्ट्रिंग को UTF-8 सिंगल-बाइट वर्णों में एन्कोड करता है:

समारोह एनकोडUTF8 ( वैल ) {
अगर ( के प्रकार वैल != 'डोरी' ) फेंक नया त्रुटि प्रकार ( 'पैरामीटर' वैल 'एक स्ट्रिंग नहीं है' ) ;
कॉन्स्ट string_utf8 = वैल. प्रतिस्थापित करें (
/[\u0080-\u07ff]/जी , // U+0080 - U+07FF => 2 बाइट्स 110yyyyy, 10zzzzzz
समारोह ( एक्स ) {
था बाहर = एक्स। charCodeAt ( 0 ) ;
वापस करना डोरी . चारकोड से ( 0xc0 | बाहर >> 6 , 0x80 | बाहर & 0x3f ) ; }
) . प्रतिस्थापित करें (
/[\u0800-\uffff]/जी , // U+0800 - U+FFFF => 3 बाइट्स 1110xxx, 10yyyyyy, 10zzzzzz
समारोह ( एक्स ) {
था बाहर = एक्स। charCodeAt ( 0 ) ;
वापस करना डोरी . चारकोड से ( 0xe0 | बाहर >> 12 , 0x80 | बाहर >> 6 & 0x3F , 0x80 | बाहर & 0x3f ) ; }
) ;
सांत्वना देना। लकड़ी का लट्ठा ( 'नियमित अभिव्यक्ति का उपयोग करके एन्कोडेड मान ->' + string_utf8 ) ;
}
एनकोडUTF8 ( 'यहाँ' )

कोड के इस स्निपेट में:

  • फ़ंक्शन को परिभाषित करें ' एनकोडUTF8() 'इसमें वह पैरामीटर शामिल है जो' के रूप में एन्कोड किए जाने वाले मान का प्रतिनिधित्व करता है यूटीएफ-8 ”।
  • इसकी परिभाषा में, पारित मूल्य पर एक चेक लागू करें जो ' का उपयोग करके स्ट्रिंग नहीं है के प्रकार 'ऑपरेटर और निर्दिष्ट कस्टम अपवाद को' के माध्यम से लौटाएं फेंक 'कीवर्ड.
  • उसके बाद, ' लागू करें charCodeAt() ' और ' fromCharCode() 'स्ट्रिंग में पहले वर्ण के यूनिकोड को पुनः प्राप्त करने और दिए गए यूनिकोड मान को क्रमशः वर्णों में बदलने की विधियाँ।
  • अंत में, इस मान को 'के रूप में एनकोड करने के लिए वर्णों के दिए गए अनुक्रम को पास करके परिभाषित फ़ंक्शन को प्रारंभ करें यूटीएफ-8 'प्रतिनिधित्व.

उत्पादन

यह आउटपुट दर्शाता है कि एन्कोडिंग उचित रूप से की गई है।

उदाहरण 2: जावास्क्रिप्ट में यूटीएफ-8 को डिकोड करना
इस प्रदर्शन में, वर्णों के अनुक्रम को डिकोड किया गया है ' यूटीएफ-8 'प्रतिनिधित्व:

समारोह डिकोडUTF8 ( वैल ) {
अगर ( के प्रकार वैल != 'डोरी' ) फेंक नया त्रुटि प्रकार ( 'पैरामीटर' वैल 'एक स्ट्रिंग नहीं है' ) ;
कॉन्स्ट एसटीआर = वैल. प्रतिस्थापित करें (
/[\u00e0-\u00ef][\u0080-\u000f][\u0080-\u000f]/g ,
समारोह ( एक्स ) {
था बाहर = ( ( एक्स। charCodeAt ( 0 ) & 0x0f ) << 12 ) | ( ( एक्स। charCodeAt ( 1 ) & 0x3f ) << 6 ) | ( एक्स। charCodeAt ( 2 ) & 0x3f ) ;
वापस करना डोरी . चारकोड से ( बाहर ) ; }
) . प्रतिस्थापित करें (
/[\u00c0-\u000df][\u0080-\u000f]/g ,
समारोह ( एक्स ) {
था बाहर = ( एक्स। charCodeAt ( 0 ) & 0x1f ) < '+str);
}
डिकोडUTF8('à çè')

इस कोड में:

  • इसी प्रकार, फ़ंक्शन को परिभाषित करें ' डिकोडUTF8() ' वह पैरामीटर होना जो डिकोड किए जाने वाले पारित मान को संदर्भित करता है।
  • फ़ंक्शन परिभाषा में, 'के माध्यम से पारित मूल्य की स्ट्रिंग स्थिति की जांच करें के प्रकार ' ऑपरेटर।
  • अब, 'लागू करें charCodeAt() क्रमशः पहले, दूसरे और तीसरे-स्ट्रिंग वर्णों के यूनिकोड को पुनः प्राप्त करने की विधि।
  • इसके अलावा, 'लागू करें स्ट्रिंग.फ्रॉमचारकोड() यूनिकोड मानों को वर्णों में बदलने की विधि।
  • इसी तरह, पहली और दूसरी स्ट्रिंग वर्णों के यूनिकोड को लाने और इन यूनिकोड मानों को वर्णों में बदलने के लिए इस प्रक्रिया को दोबारा दोहराएं।
  • अंत में, UTF-8 डिकोडेड मान वापस करने के लिए परिभाषित फ़ंक्शन तक पहुंचें।

उत्पादन

यहां, यह सत्यापित किया जा सकता है कि डिकोडिंग सही ढंग से की गई है।

निष्कर्ष

UTF-8 प्रतिनिधित्व में एन्कोडिंग/डिकोडिंग 'के माध्यम से की जा सकती है' एनोडयूआरआईकंपोनेंट ()' और ' डिकोडयूआरआईकंपोनेंट() तरीके, ' एनकोडयूआरआई() ' और ' डिकोडयूआरआई() 'तरीके, या रेगुलर एक्सप्रेशन का उपयोग करना।