জাভাস্ক্রিপ্টে UTF-8 কীভাবে এনকোড/ডিকোড করবেন

Jabhaskripte Utf 8 Kibhabe Enakoda Dikoda Karabena



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)।

এটি এমন যে একটি 'এর প্রথম বাইট UTF-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 এর এনকোডিং এবং ডিকোডিং নীচে বর্ণিত পদ্ধতির মাধ্যমে করা যেতে পারে:

  • ' enodeURICcomponent() ' এবং ' ডিকোডইউরিক কম্পোনেন্ট() 'পদ্ধতি।
  • ' encodeURI() ' এবং ' decodeURI() 'পদ্ধতি।
  • নিয়মিত অভিব্যক্তি.

পদ্ধতি 1: জাভাস্ক্রিপ্টে UTF-8 এনকোড/ডিকোড করুন 'encodeURICcomponent()' এবং 'decodeURIComponent()' পদ্ধতি ব্যবহার করে

দ্য ' encodeURICcomponent() ” পদ্ধতি একটি URI উপাদান এনকোড করে। এছাড়াও, এটি বিশেষ অক্ষর যেমন @, &, :, +, $, #, ইত্যাদি এনকোড করতে পারে। ডিকোডইউরিক কম্পোনেন্ট() ” পদ্ধতি, যাইহোক, একটি URI উপাদান ডিকোড করে। এই পদ্ধতিগুলি যথাক্রমে UTF-8-এ পাস করা মানগুলিকে এনকোড এবং ডিকোড করতে ব্যবহার করা যেতে পারে।

সিনট্যাক্স ('এনকোডইউআরআইকম্পোনেন্ট()' পদ্ধতি)

encodeURIC কম্পোনেন্ট ( এক্স )

প্রদত্ত সিনট্যাক্সে, ' এক্স ” এনকোড করা URI নির্দেশ করে।

ফেরত মূল্য
এই পদ্ধতিটি একটি স্ট্রিং হিসাবে একটি এনকোড করা URI পুনরুদ্ধার করেছে।

সিনট্যাক্স ('decodeURICcomponent()' পদ্ধতি)

ডিকোডইউরিক উপাদান ( এক্স )

এখানে, ' এক্স ” ডিকোড করা URI বোঝায়।

ফেরত মূল্য
এই পদ্ধতিটি ডিকোড করা ইউআরআই দেয়।

উদাহরণ 1: জাভাস্ক্রিপ্টে UTF-8 এনকোডিং
এই উদাহরণটি একটি ব্যবহারকারী-সংজ্ঞায়িত ফাংশনের সাহায্যে পাস করা স্ট্রিংটিকে একটি এনকোড করা UTF-8 মানতে এনকোড করে:

ফাংশন encode_utf8 ( এক্স ) {
ফিরে অব্যাহতি ( encodeURIC কম্পোনেন্ট ( এক্স ) ) ;
}
val = 'এখানে' ;
কনসোল লগ ( 'প্রদত্ত মান ->' + ভাল ) ;
encodeVal যাক = encode_utf8 ( ভাল ) ;
কনসোল লগ ( 'এনকোডেড মান ->' + encodeVal ) ;

এই কোড লাইনগুলিতে, নীচের প্রদত্ত পদক্ষেপগুলি সম্পাদন করুন:

  • প্রথমত, ফাংশনটি সংজ্ঞায়িত করুন ' encode_utf8() ” যা নির্দিষ্ট পরামিতি দ্বারা উপস্থাপিত পাস করা স্ট্রিংকে এনকোড করে।
  • এই এনকোডিং করা হয় ' encodeURICcomponent() ফাংশনের সংজ্ঞায় পদ্ধতি।
  • বিঃদ্রঃ: দ্য ' unescape() ” পদ্ধতি যেকোনও এস্কেপ সিকোয়েন্সকে এটি দ্বারা উপস্থাপিত অক্ষর দিয়ে প্রতিস্থাপন করে।
  • এর পরে, এনকোড করা মানটি শুরু করুন এবং এটি প্রদর্শন করুন।
  • এখন, সংজ্ঞায়িত ফাংশনটি চালু করুন এবং UTF-8-এ এই মানটিকে এনকোড করতে আর্গুমেন্ট হিসাবে অক্ষরের সংজ্ঞায়িত সংমিশ্রণটি পাস করুন।

আউটপুট

এখানে, এটি উহ্য করা যেতে পারে যে পৃথক অক্ষরগুলি সেই অনুযায়ী UTF-8 এ উপস্থাপিত এবং এনকোড করা হয়েছে।

উদাহরণ 2: জাভাস্ক্রিপ্টে UTF-8 ডিকোডিং
নীচের কোড প্রদর্শনটি পাস করা মানকে (অক্ষরের আকারে) একটি এনকোড করা UTF-8 উপস্থাপনায় ডিকোড করে:

ফাংশন decode_utf8 ( এক্স ) {
ফিরে ডিকোডইউরিক উপাদান ( পলায়ন ( এক্স ) ) ;
}
val = 'à çè' ;
কনসোল লগ ( 'প্রদত্ত মান ->' + ভাল ) ;
ডিকোড করা যাক = decode_utf8 ( ভাল ) ;
কনসোল লগ ( 'ডিকোড করা মান ->' + ডিকোড ) ;

কোডের এই ব্লকে:

  • একইভাবে, ফাংশনটি সংজ্ঞায়িত করুন ' decode_utf8() ' যেটি 'এর মাধ্যমে অক্ষরের পাসকৃত সংমিশ্রণকে ডিকোড করে ডিকোডইউরিক কম্পোনেন্ট() 'পদ্ধতি।
  • বিঃদ্রঃ: দ্য ' পালানো() ” পদ্ধতি একটি নতুন স্ট্রিং পুনরুদ্ধার করে যেখানে বিভিন্ন অক্ষর হেক্সাডেসিমাল এস্কেপ সিকোয়েন্স দ্বারা প্রতিস্থাপিত হয়।
  • এর পরে, ডিকোড করার জন্য অক্ষরগুলির সংমিশ্রণ নির্দিষ্ট করুন এবং UTF-8 যথাযথভাবে ডিকোডিং সম্পাদন করতে সংজ্ঞায়িত ফাংশনটি অ্যাক্সেস করুন৷

আউটপুট

এখানে, এটি বোঝানো যেতে পারে যে পূর্ববর্তী উদাহরণে এনকোড করা মানটি ডিফল্ট মানতে ডিকোড করা হয়েছে।

পদ্ধতি 2: জাভাস্ক্রিপ্টে UTF-8 এনকোড/ডিকোড করুন 'encodeURI()' এবং 'decodeURI()' পদ্ধতি ব্যবহার করে

দ্য ' encodeURI() ” পদ্ধতিটি অক্ষরের UTF-8 এনকোডিংকে প্রতিনিধিত্বকারী বেশ কয়েকটি এস্কেপ সিকোয়েন্সের সাথে একাধিক অক্ষরের প্রতিটি উদাহরণ প্রতিস্থাপন করে একটি URI এনকোড করে। তুলনায় ' encodeURICcomponent() ” পদ্ধতি, এই বিশেষ পদ্ধতি সীমিত অক্ষর এনকোড করে।

দ্য ' decodeURI() ” পদ্ধতি, যাইহোক, ইউআরআই (এনকোডেড) ডিকোড করে। একটি UTF-8 এনকোড করা মানের অক্ষরগুলির সংমিশ্রণকে এনকোড এবং ডিকোড করার জন্য এই পদ্ধতিগুলি একত্রে প্রয়োগ করা যেতে পারে।

সিনট্যাক্স(এনকোডইউআরআই() পদ্ধতি)

encodeURI ( এক্স )

উপরের সিনট্যাক্সে, ' এক্স ” একটি URI হিসাবে এনকোড করা মানের সাথে মিলে যায়৷

ফেরত মূল্য
এই পদ্ধতিটি একটি স্ট্রিং আকারে এনকোড করা মান পুনরুদ্ধার করে।

সিনট্যাক্স(ডিকোডইউআরআই() পদ্ধতি)

ডিকোডইউআরআই ( এক্স )

এখানে, ' এক্স ” ডিকোড করার জন্য এনকোড করা URI প্রতিনিধিত্ব করে।

ফেরত মূল্য
এটি একটি স্ট্রিং হিসাবে ডিকোড করা URI ফেরত দেয়।

উদাহরণ 1: জাভাস্ক্রিপ্টে UTF-8 এনকোডিং
এই প্রদর্শনটি একটি এনকোড করা UTF-8 মানতে অক্ষরের পাস সংমিশ্রণকে এনকোড করে:

ফাংশন encode_utf8 ( এক্স ) {
ফিরে অব্যাহতি ( encodeURI ( এক্স ) ) ;
}
val = 'এখানে' ;
কনসোল লগ ( 'প্রদত্ত মান ->' + ভাল ) ;
encodeVal যাক = encode_utf8 ( ভাল ) ;
কনসোল লগ ( 'এনকোডেড মান ->' + encodeVal ) ;

এখানে, এনকোডিংয়ের জন্য বরাদ্দকৃত একটি ফাংশন সংজ্ঞায়িত করার পদ্ধতিগুলি স্মরণ করুন। এখন, একটি UTF-8 এনকোডেড স্ট্রিং হিসাবে অক্ষরের পাস সংমিশ্রণকে উপস্থাপন করতে 'encodeURI()' পদ্ধতি প্রয়োগ করুন। এর পরে, একইভাবে, মূল্যায়ন করার জন্য অক্ষরগুলিকে সংজ্ঞায়িত করুন এবং এনকোডিং সম্পাদন করার জন্য সংজ্ঞায়িত মানটিকে তার আর্গুমেন্ট হিসাবে পাস করে সংজ্ঞায়িত ফাংশনটি আহ্বান করুন।

আউটপুট

এখানে, এটা স্পষ্ট যে অক্ষরের পাসকৃত সমন্বয় সফলভাবে এনকোড করা হয়েছে।

উদাহরণ 2: জাভাস্ক্রিপ্টে UTF-8 ডিকোডিং
নীচের কোড প্রদর্শনটি এনকোড করা UTF-8 মানকে ডিকোড করে (আগের উদাহরণে):

ফাংশন decode_utf8 ( এক্স ) {
ফিরে ডিকোডইউআরআই ( পলায়ন ( এক্স ) ) ;
}
val = 'à çè' ;
কনসোল লগ ( 'প্রদত্ত মান ->' + ভাল ) ;
ডিকোড করা যাক = decode_utf8 ( ভাল ) ;
কনসোল লগ ( 'ডিকোড করা মান ->' + ডিকোড ) ;

এই কোড অনুসারে, ফাংশনটি ঘোষণা করুন ' decode_utf8() ' যেটি বিবৃত প্যারামিটার নিয়ে গঠিত যা ' ব্যবহার করে ডিকোড করা অক্ষরগুলির সংমিশ্রণকে উপস্থাপন করে decodeURI() 'পদ্ধতি। এখন, ডিকোড করার মানটি নির্দিষ্ট করুন এবং ডিকোডিং প্রয়োগ করতে সংজ্ঞায়িত ফাংশনটি ' UTF-8 'প্রতিনিধিত্ব।

আউটপুট

এই ফলাফলটি বোঝায় যে পূর্বে এনকোড করা মান সেই অনুযায়ী সিদ্ধান্ত নেওয়া হয়েছিল।

পদ্ধতি 3: রেগুলার এক্সপ্রেশন ব্যবহার করে জাভাস্ক্রিপ্টে UTF-8 এনকোড/ডিকোড করুন

এই পদ্ধতিটি এনকোডিং প্রয়োগ করে যাতে মাল্টি-বাইট ইউনিকোড স্ট্রিংটি UTF-8 একাধিক একক-বাইট অক্ষরে এনকোড করা হয়। একইভাবে, ডিকোডিং এমনভাবে করা হয় যে এনকোড করা স্ট্রিংটি মাল্টি-বাইট ইউনিকোড অক্ষরগুলিতে ডিকোড করা হয়।

উদাহরণ 1: জাভাস্ক্রিপ্টে UTF-8 এনকোডিং
নিচের কোডটি মাল্টি-বাইট ইউনিকোড স্ট্রিংকে UTF-8 একক-বাইট অক্ষরে এনকোড করে:

ফাংশন encodeUTF8 ( ভাল ) {
যদি ( ধরণ ভাল != 'স্ট্রিং' ) নিক্ষেপ নতুন টাইপ ত্রুটি ( 'প্যারামিটার' ভাল 'একটি স্ট্রিং নয়' ) ;
const string_utf8 = ভাল প্রতিস্থাপন (
/[\u0080-\u07ff]/g , // U+0080 - U+07FF => 2 বাইট 110yyyyy, 10zzzzzz
ফাংশন ( এক্স ) {
ছিল আউট = এক্স. charCodeAt ( 0 ) ;
ফিরে স্ট্রিং . CharCode থেকে ( 0xc0 | আউট >> 6 , 0x80 | আউট এবং 0x3f ) ; }
) . প্রতিস্থাপন (
/[\u0800-\uffff]/g , // U+0800 - U+FFFF => 3 বাইট 1110xxxx, 10yyyyyy, 10zzzzzz
ফাংশন ( এক্স ) {
ছিল আউট = এক্স. charCodeAt ( 0 ) ;
ফিরে স্ট্রিং . CharCode থেকে ( 0xe0 | আউট >> 12 , 0x80 | আউট >> 6 এবং 0x3F , 0x80 | আউট এবং 0x3f ) ; }
) ;
কনসোল লগ ( 'নিয়মিত এক্সপ্রেশন ব্যবহার করে এনকোড করা মান ->' + string_utf8 ) ;
}
encodeUTF8 ( 'এখানে' )

কোডের এই স্নিপেটে:

  • ফাংশন সংজ্ঞায়িত করুন ' encodeUTF8() ' প্যারামিটারের সমন্বয়ে যা এনকোড করা মানটিকে ' হিসাবে উপস্থাপন করে UTF-8
  • এর সংজ্ঞায়, পাস করা মানটির উপর একটি চেক প্রয়োগ করুন যা ' ব্যবহার করে স্ট্রিং নয় ধরণ ' অপারেটর এবং 'এর মাধ্যমে নির্দিষ্ট কাস্টম ব্যতিক্রম ফেরত দিন নিক্ষেপ ' কীওয়ার্ড।
  • এর পরে, প্রয়োগ করুন ' charCodeAt() ' এবং ' CharCode() থেকে স্ট্রিং-এর প্রথম অক্ষরের ইউনিকোড পুনরুদ্ধার এবং প্রদত্ত ইউনিকোড মানকে যথাক্রমে অক্ষরে রূপান্তর করার পদ্ধতি।
  • অবশেষে, এই মানটিকে একটি হিসাবে এনকোড করতে অক্ষরের প্রদত্ত ক্রমটি পাস করে সংজ্ঞায়িত ফাংশনটি শুরু করুন UTF-8 'প্রতিনিধিত্ব।

আউটপুট

এই আউটপুটটি বোঝায় যে এনকোডিং যথাযথভাবে করা হয়েছে।

উদাহরণ 2: জাভাস্ক্রিপ্টে UTF-8 ডিকোডিং
এই প্রদর্শনে, অক্ষরের ক্রমটি 'এ ডিকোড করা হয় UTF-8 'প্রতিনিধিত্ব:

ফাংশন decodeUTF8 ( ভাল ) {
যদি ( ধরণ ভাল != 'স্ট্রিং' ) নিক্ষেপ নতুন টাইপ ত্রুটি ( 'প্যারামিটার' ভাল 'একটি স্ট্রিং নয়' ) ;
const str = ভাল প্রতিস্থাপন (
/[\u00e0-\u00ef][\u0080-\u00bf][\u0080-\u00bf]/g ,
ফাংশন ( এক্স ) {
ছিল আউট = ( ( এক্স. charCodeAt ( 0 ) এবং 0x0f ) << 12 ) | ( ( এক্স. charCodeAt ( 1 ) এবং 0x3f ) << 6 ) | ( এক্স. charCodeAt ( 2 ) এবং 0x3f ) ;
ফিরে স্ট্রিং . CharCode থেকে ( আউট ) ; }
) . প্রতিস্থাপন (
/[\u00c0-\u00df][\u0080-\u00bf]/g ,
ফাংশন ( এক্স ) {
ছিল আউট = ( এক্স. charCodeAt ( 0 ) এবং 0x1f ) < '+str);
}
decodeUTF8('à çè')

এই কোডে:

  • একইভাবে, ফাংশনটি সংজ্ঞায়িত করুন ' decodeUTF8() ডিকোড করার জন্য পাস করা মানকে বোঝায় এমন প্যারামিটার থাকা।
  • ফাংশনের সংজ্ঞায়, 'এর মাধ্যমে পাস করা মানের স্ট্রিং অবস্থা পরীক্ষা করুন ধরণ ' অপারেটর.
  • এখন, প্রয়োগ করুন ' charCodeAt() ” যথাক্রমে প্রথম, দ্বিতীয় এবং তৃতীয়-স্ট্রিং অক্ষরের ইউনিকোড পুনরুদ্ধার করার পদ্ধতি।
  • এছাড়াও, প্রয়োগ করুন ' String.fromCharCode() ইউনিকোড মানকে অক্ষরে রূপান্তর করার পদ্ধতি।
  • একইভাবে, প্রথম এবং দ্বিতীয় স্ট্রিং অক্ষরের ইউনিকোড আনতে এবং এই ইউনিকোড মানগুলিকে অক্ষরে রূপান্তর করতে এই পদ্ধতিটি আবার পুনরাবৃত্তি করুন।
  • অবশেষে, UTF-8 ডিকোড করা মান ফেরাতে সংজ্ঞায়িত ফাংশন অ্যাক্সেস করুন।

আউটপুট

এখানে, এটি যাচাই করা যেতে পারে যে ডিকোডিং সঠিকভাবে সম্পন্ন হয়েছে।

উপসংহার

UTF-8 উপস্থাপনায় এনকোডিং/ডিকোডিং 'এর মাধ্যমে করা যেতে পারে enodeURICcomponent()' এবং ' ডিকোডইউরিক কম্পোনেন্ট() পদ্ধতি, ' encodeURI() ' এবং ' decodeURI() ” পদ্ধতি, বা রেগুলার এক্সপ্রেশন ব্যবহার করে।