Как да кодирате/декодирате UTF-8 в JavaScript

Kak Da Kodirate Dekodirate Utf 8 V Javascript



UTF-8 означава „ Unicode формат за трансформация 8-битов ” и съответства на страхотен формат за кодиране, който гарантира, че знаците се показват по подходящ начин на всички устройства, независимо от използвания език/скрипт. Освен това този формат е помощен за уеб страници и се използва за съхранение, обработка и предаване на текстови данни в интернет.

Този урок обхваща долупосочените области на съдържанието:







Какво е UTF-8 кодиране?

UTF-8 кодиране ” е процедурата за трансформиране на последователността от Unicode знаци в кодиран низ, състоящ се от 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 в JavaScript?

Кодирането и декодирането на UTF-8 в JavaScript може да се извърши чрез посочените по-долу подходи:

  • enodeURIComponent() ' и ' decodeURIComponent() ” Методи.
  • кодиранеURI() ' и ' decodeURI() ” Методи.
  • Регулярни изрази.

Подход 1: Кодиране/декодиране на UTF-8 в JavaScript с помощта на методите „encodeURIComponent()“ и „decodeURIComponent()“

encodeURIComponent() ” кодира URI компонент. Освен това може да кодира специални символи като @, &, :, +, $, # и др. decodeURIComponent() ”, обаче, декодира URI компонент. Тези методи могат да се използват съответно за кодиране и декодиране на предадените стойности в UTF-8.

Синтаксис (метод „encodeURIComponent()“)

encodeURIComponent ( х )

В дадения синтаксис „ х ” показва URI, който трябва да бъде кодиран.

Върната стойност
Този метод извлече кодиран URI като низ.

Синтаксис (метод „decodeURIComponent()“)

decodeURIComponent ( х )

Тук, ' х ” се отнася до URI, който трябва да бъде декодиран.

Върната стойност
Този метод дава декодирания URI.

Пример 1: Кодиране на UTF-8 в JavaScript
Този пример кодира предадения низ до кодирана UTF-8 стойност с помощта на дефинирана от потребителя функция:

функция кодиране_utf8 ( х ) {
връщане unescape ( encodeURIComponent ( х ) ) ;
}
нека вал = 'тук' ;
конзола. дневник ( „Дадена стойност ->“ + вал ) ;
нека encodeVal = кодиране_utf8 ( вал ) ;
конзола. дневник ( 'Кодирана стойност -> ' + encodeVal ) ;

В тези кодови редове изпълнете дадените по-долу стъпки:

  • Първо, дефинирайте функцията ' encode_utf8() ”, който кодира предадения низ, представен от посочения параметър.
  • Това кодиране се извършва от „ encodeURIComponent() ” в дефиницията на функцията.
  • Забележка: изключване () ” методът замества всяка последователност за избягване със символа, представен от нея.
  • След това инициализирайте стойността, която ще бъде кодирана, и я покажете.
  • Сега извикайте дефинираната функция и предайте дефинираната комбинация от знаци като нейни аргументи, за да кодирате тази стойност в UTF-8.

Изход

Тук може да се подразбира, че отделните знаци са представени и кодирани съответно в UTF-8.

Пример 2: Декодиране на UTF-8 в JavaScript
Демонстрацията на код по-долу декодира предадената стойност (под формата на знаци) до кодирано UTF-8 представяне:

функция decode_utf8 ( х ) {
връщане decodeURIComponent ( бягство ( х ) ) ;
}
нека вал = 'à çè' ;
конзола. дневник ( „Дадена стойност ->“ + вал ) ;
нека декодира = decode_utf8 ( вал ) ;
конзола. дневник ( 'Декодирана стойност -> ' + декодирам ) ;

В този блок код:

  • По същия начин дефинирайте функцията „ decode_utf8() ”, който декодира предадената комбинация от знаци чрез „ decodeURIComponent() ” метод.
  • Забележка: бягство() ” метод извлича нов низ, в който различни знаци са заменени с шестнадесетични последователности за избягване.
  • След това посочете комбинацията от знаци за декодиране и достъп до дефинираната функция, за да извършите декодирането в UTF-8 по подходящ начин.

Изход

Тук може да се подразбира, че кодираната стойност в предишния пример е декодирана до стойността по подразбиране.

Подход 2: Кодиране/декодиране на UTF-8 в JavaScript с помощта на методите „encodeURI()“ и „decodeURI()“

кодиранеURI() ” кодира URI чрез заместване на всеки екземпляр от множество символи с редица последователности за избягване, представляващи UTF-8 кодирането на знака. В сравнение с „ encodeURIComponent() ”, този конкретен метод кодира ограничени знаци.

decodeURI() ” метод обаче декодира URI (кодиран). Тези методи могат да бъдат приложени в комбинация за кодиране и декодиране на комбинацията от знаци в UTF-8 кодирана стойност.

Синтаксис (encodeURI() Метод)

encodeURI ( х )

В горния синтаксис „ х ” съответства на стойността, която трябва да бъде кодирана като URI.

Върната стойност
Този метод извлича кодираната стойност под формата на низ.

Синтаксис (decodeURI() Метод)

decodeURI ( х )

Тук, ' х ” представлява кодираният URI, който трябва да бъде декодиран.

Върната стойност
Той връща декодирания URI като низ.

Пример 1: Кодиране на UTF-8 в JavaScript
Тази демонстрация кодира предадената комбинация от знаци в кодирана UTF-8 стойност:

функция кодиране_utf8 ( х ) {
връщане unescape ( encodeURI ( х ) ) ;
}
нека вал = 'тук' ;
конзола. дневник ( „Дадена стойност ->“ + вал ) ;
нека encodeVal = кодиране_utf8 ( вал ) ;
конзола. дневник ( 'Кодирана стойност -> ' + encodeVal ) ;

Тук си припомнете подходите за дефиниране на функция, разпределена за кодиране. Сега приложете метода „encodeURI()“, за да представите предадената комбинация от знаци като UTF-8 кодиран низ. След това по същия начин дефинирайте символите, които да бъдат оценени, и извикайте дефинираната функция, като предадете дефинираната стойност като нейни аргументи, за да извършите кодирането.

Изход

Тук е очевидно, че предадената комбинация от знаци е кодирана успешно.

Пример 2: Декодиране на UTF-8 в JavaScript
Демонстрацията на код по-долу декодира кодираната UTF-8 стойност (в предишния пример):

функция decode_utf8 ( х ) {
връщане decodeURI ( бягство ( х ) ) ;
}
нека вал = 'à çè' ;
конзола. дневник ( „Дадена стойност ->“ + вал ) ;
нека декодира = decode_utf8 ( вал ) ;
конзола. дневник ( 'Декодирана стойност -> ' + декодирам ) ;

Съгласно този код декларирайте функцията „ decode_utf8() ”, който съдържа посочения параметър, който представлява комбинацията от знаци, които трябва да бъдат декодирани с помощта на „ decodeURI() ” метод. Сега посочете стойността за декодиране и извикайте дефинираната функция, за да приложите декодирането към „ UTF-8 ” представителство.

Изход

Този резултат предполага, че кодираната стойност преди това е решена съответно.

Подход 3: Кодиране/декодиране на UTF-8 в JavaScript с помощта на регулярните изрази

Този подход прилага кодирането така, че многобайтовият Unicode низ е кодиран в UTF-8 множество еднобайтови знаци. По същия начин декодирането се извършва така, че кодираният низ се декодира обратно до многобайтови Unicode символи.

Пример 1: Кодиране на UTF-8 в JavaScript
Кодът по-долу кодира многобайтовия Unicode низ в UTF-8 еднобайтови знаци:

функция кодира UTF8 ( вал ) {
ако ( тип вал != 'низ' ) хвърлям нов TypeError ( „Параметърът“ вал 'не е низ' ) ;
конст низ_utf8 = вал. замени (
/[\u0080-\u07ff]/g , // U+0080 - U+07FF => 2 байта 110yyyyy, 10zzzzzz
функция ( х ) {
беше навън = х. charCodeAt ( 0 ) ;
връщане низ . fromCharCode ( 0xc0 | навън >> 6 , 0x80 | навън и 0x3f ) ; }
) . замени (
/[\u0800-\uffff]/g , // U+0800 - U+FFFF => 3 байта 1110xxxx, 10yyyyyy, 10zzzzzz
функция ( х ) {
беше навън = х. charCodeAt ( 0 ) ;
връщане низ . fromCharCode ( 0xe0 | навън >> 12 , 0x80 | навън >> 6 и 0x3F , 0x80 | навън и 0x3f ) ; }
) ;
конзола. дневник ( 'Кодирана стойност с помощта на регулярен израз -> ' + низ_utf8 ) ;
}
кодира UTF8 ( 'тук' )

В този фрагмент от код:

  • Дефинирайте функцията ' кодиранеUTF8() “, съдържащ параметъра, който представлява стойността, която трябва да бъде кодирана като „ UTF-8 ”.
  • В неговата дефиниция приложете проверка на предадената стойност, която не е низът, като използвате „ тип ” и връща указаното персонализирано изключение чрез „ хвърлям ” ключова дума.
  • След това приложете „ charCodeAt() ' и ' fromCharCode() ” методи за извличане на Unicode на първия знак в низа и преобразуване на дадената Unicode стойност съответно в знаци.
  • И накрая, извикайте дефинираната функция чрез предаване на дадена последователност от знаци, за да кодирате тази стойност като „ UTF-8 ” представителство.

Изход

Този изход означава, че кодирането е извършено правилно.

Пример 2: Декодиране на UTF-8 в JavaScript
В тази демонстрация последователността от знаци се декодира до „ UTF-8 ” представителство:

функция декодиране UTF8 ( вал ) {
ако ( тип вал != 'низ' ) хвърлям нов TypeError ( „Параметърът“ вал 'не е низ' ) ;
конст ул = вал. замени (
/[\u00e0-\u00ef][\u0080-\u00bf][\u0080-\u00bf]/g ,
функция ( х ) {
беше навън = ( ( х. charCodeAt ( 0 ) и 0x0f ) << 12 ) | ( ( х. charCodeAt ( 1 ) и 0x3f ) << 6 ) | ( х. charCodeAt ( 2 ) и 0x3f ) ;
връщане низ . fromCharCode ( навън ) ; }
) . замени (
/[\u00c0-\u00df][\u0080-\u00bf]/g ,
функция ( х ) {
беше навън = ( х. charCodeAt ( 0 ) и 0x1f ) < '+str);
}
декодиранеUTF8('à çè')

В този код:

  • По същия начин дефинирайте функцията „ декодиранеUTF8() ” с параметър, който се отнася до предадената стойност, която трябва да бъде декодирана.
  • В дефиницията на функцията проверете за условието на низа на предадената стойност чрез „ тип ' оператор.
  • Сега приложете „ charCodeAt() ” за извличане на Unicode съответно на първия, втория и третия знак от низа.
  • Също така приложете „ String.fromCharCode() ” за трансформиране на Unicode стойностите в знаци.
  • По същия начин повторете тази процедура отново, за да извлечете Unicode на първия и втория символ от низа и да трансформирате тези unicode стойности в знаци.
  • И накрая, отворете дефинираната функция, за да върнете декодираната UTF-8 стойност.

Изход

Тук може да се провери дали декодирането е извършено правилно.

Заключение

Кодирането/декодирането в UTF-8 представяне може да се извърши чрез „ enodeURIComponent()” и ' decodeURIComponent() методи, „ кодиранеURI() ' и ' decodeURI() ” или с помощта на регулярните изрази.