Како кодирати/декодирати УТФ-8 у ЈаваСцрипт-у

Kako Kodirati Dekodirati Utf 8 U Javascript U



УТФ-8 значи „ Уницоде Трансформатион Формат 8-бит ” и одговара одличном формату кодирања који осигурава да се знакови приказују на одговарајући начин на свим уређајима, без обзира на језик/писмо који се користи. Такође, овај формат је помоћни за веб странице и користи се за складиштење, обраду и пренос текстуалних података на интернету.

Овај водич покрива доле наведене области садржаја:







Шта је УТФ-8 кодирање?

УТФ-8 кодирање ” је поступак трансформације низа Уницоде знакова у кодирани низ који се састоји од 8-битних бајтова. Ово кодирање може представљати велики распон знакова у поређењу са другим кодовима знакова.



Како функционише УТФ-8 кодирање?

Док представља знакове у УТФ-8, свака појединачна кодна тачка је представљена једним или више бајтова. Следи преглед тачака кода у АСЦИИ опсегу:



  • Један бајт представља кодне тачке у АСЦИИ опсегу (0-127).
  • Два бајта представљају кодне тачке у АСЦИИ опсегу (128-2047).
  • Три бајта представљају кодне тачке у АСЦИИ опсегу (2048-65535).
  • Четири бајта представљају кодне тачке у АСЦИИ опсегу (65536-1114111).

То је такво да први бајт „ УТФ-8 ” секвенца се назива „ водећи бајт ” који даје информације о броју бајтова у низу и вредности кодне тачке карактера.
„Водећи бајт“ за секвенцу од једног, два, три и четири бајта је у опсегу (0-127), (194-233), (224-239) и (240-247), респективно.





Остали бајтови у низу се називају „ траилинг ” бајтова. Сви бајтови за секвенцу од два, три и четири бајта су у опсегу (128-191). То је такво да се вредност кодне тачке карактера може израчунати анализом водећих и завршних бајтова.

Како се израчунавају вредности кодних поена?

Вредности кодних тачака за различите секвенце бајтова се израчунавају на следећи начин:



  • Двобајтна секвенца: Кодна тачка је еквивалентна „((лб – 194) * 64) + (тб – 128)“.
  • Секвенца од три бајта : Кодна тачка је еквивалентна „((лб – 224) * 4096) + ((тб1 – 128) * 64) + (тб2 – 128)”.
  • Четворобајтна секвенца : Кодна тачка је еквивалентна „((лб – 240) * 262144) + ((тб1 – 128) * 4096) + ((тб2 – 128) * 64) + (тб3 – 128)”.

Како кодирати/декодирати УТФ-8 у ЈаваСцрипт-у?

Кодирање и декодирање УТФ-8 у ЈаваСцрипт-у може се извршити путем доле наведених приступа:

  • енодеУРИЦомпонент() ' и ' децодеУРИЦомпонент() ” Методе.
  • енцодеУРИ() ' и ' децодеУРИ() ” Методе.
  • Регуларни изрази.

Приступ 1: Кодирање/декодирање УТФ-8 у ЈаваСцрипт-у помоћу метода „енцодеУРИЦомпонент()“ и „децодеУРИЦомпонент()“

енцодеУРИЦомпонент() ” метод кодира УРИ компоненту. Такође, може да кодира специјалне знакове као што су @, &, :, +, $, #, итд. децодеУРИЦомпонент() ” метода, међутим, декодира УРИ компоненту. Ове методе се могу користити за кодирање и декодирање прослеђених вредности у УТФ-8, респективно.

Синтакса (метод „енцодеУРИЦомпонент()“)

енцодеУРИЦомпонент ( Икс )

У датој синтакси, „ Икс ” означава УРИ који треба кодирати.

Повратна вредност
Овај метод је преузео кодирани УРИ као стринг.

Синтакса (метод „децодеУРИЦомпонент()”)

децодеУРИЦомпонент ( Икс )

Овде, „ Икс ” се односи на УРИ који треба декодирати.

Повратна вредност
Овај метод даје декодирани УРИ.

Пример 1: Кодирање УТФ-8 у ЈаваСцрипт-у
Овај пример кодира прослеђени низ у кодирану УТФ-8 вредност уз помоћ кориснички дефинисане функције:

функција енцоде_утф8 ( Икс ) {
повратак непобећи ( енцодеУРИЦомпонент ( Икс ) ) ;
}
нека вал = 'овде' ;
конзола. Пријава ( 'Дата вредност ->' + вал ) ;
нека енцодеВал = енцоде_утф8 ( вал ) ;
конзола. Пријава ( 'Кодирана вредност ->' + енцодеВал ) ;

У овим редовима кода извршите доле наведене кораке:

  • Прво дефинишите функцију „ енцоде_утф8() ” који кодира прослеђени низ представљен наведеним параметром.
  • Ово кодирање се врши помоћу „ енцодеУРИЦомпонент() ” метод у дефиницији функције.
  • Белешка: унесцапе() ” метод замењује било коју излазну секвенцу са карактером који њоме представља.
  • Након тога, иницијализујте вредност коју желите да кодирате и прикажите је.
  • Сада позовите дефинисану функцију и проследите дефинисану комбинацију карактера као њене аргументе да бисте ову вредност кодирали у УТФ-8.

Излаз

Овде се може имплицирати да су појединачни знакови представљени и кодирани у УТФ-8 у складу са тим.

Пример 2: Декодирање УТФ-8 у ЈаваСцрипт-у
Доња демонстрација кода декодира прослеђену вредност (у облику знакова) у кодирану УТФ-8 репрезентацију:

функција децоде_утф8 ( Икс ) {
повратак децодеУРИЦомпонент ( побећи ( Икс ) ) ;
}
нека вал = 'А А§А¨' ;
конзола. Пријава ( 'Дата вредност ->' + вал ) ;
нека декодира = децоде_утф8 ( вал ) ;
конзола. Пријава ( 'Дешифрована вредност -> ' + декодирати ) ;

У овом блоку кода:

  • Слично, дефинишите функцију „ децоде_утф8() ” који декодира прослеђену комбинацију знакова преко „ децодеУРИЦомпонент() ” метод.
  • Белешка: есцапе() ” метода преузима нови стринг у коме су различити знакови замењени хексадецималним излазним секвенцама.
  • Након тога наведите комбинацију знакова за декодирање и приступите дефинисаној функцији да бисте извршили декодирање у УТФ-8 на одговарајући начин.

Излаз

Овде се може имплицирати да је кодирана вредност у претходном примеру декодирана на подразумевану вредност.

Приступ 2: Кодирање/декодирање УТФ-8 у ЈаваСцрипт-у помоћу метода „енцодеУРИ()“ и „децодеУРИ()“

енцодеУРИ() ” метод кодира УРИ заменом сваке инстанце више знакова са бројем излазних секвенци које представљају УТФ-8 кодирање карактера. У поређењу са „ енцодеУРИЦомпонент() ”, овај посебан метод кодира ограничене знакове.

децодеУРИ() ” метода, међутим, декодира УРИ (кодиран). Ове методе се могу применити у комбинацији за кодирање и декодирање комбинације знакова у вредности кодираној УТФ-8.

Синтакса(метод енцодеУРИ())

енцодеУРИ ( Икс )

У горњој синтакси, „ Икс ” одговара вредности која се кодира као УРИ.

Повратна вредност
Овај метод преузима кодирану вредност у облику стринга.

Синтакса(децодеУРИ() метода)

децодеУРИ ( Икс )

Овде, „ Икс ” представља кодирани УРИ који треба декодирати.

Повратна вредност
Враћа декодирани УРИ као стринг.

Пример 1: Кодирање УТФ-8 у ЈаваСцрипт-у
Ова демонстрација кодира прослеђену комбинацију знакова у кодирану УТФ-8 вредност:

функција енцоде_утф8 ( Икс ) {
повратак непобећи ( енцодеУРИ ( Икс ) ) ;
}
нека вал = 'овде' ;
конзола. Пријава ( 'Дата вредност ->' + вал ) ;
нека енцодеВал = енцоде_утф8 ( вал ) ;
конзола. Пријава ( 'Кодирана вредност ->' + енцодеВал ) ;

Овде се присетите приступа за дефинисање функције додељене за кодирање. Сада примените метод „енцодеУРИ()“ да представите прослеђену комбинацију знакова као УТФ-8 кодиран стринг. Након тога, исто тако, дефинишите карактере за процену и позовите дефинисану функцију тако што ћете пренети дефинисану вредност као њене аргументе за извршење кодирања.

Излаз

Овде је евидентно да је пренета комбинација знакова успешно кодирана.

Пример 2: Декодирање УТФ-8 у ЈаваСцрипт-у
Демонстрација кода у наставку декодира кодирану УТФ-8 вредност (у претходном примеру):

функција децоде_утф8 ( Икс ) {
повратак децодеУРИ ( побећи ( Икс ) ) ;
}
нека вал = 'А А§А¨' ;
конзола. Пријава ( 'Дата вредност ->' + вал ) ;
нека декодира = децоде_утф8 ( вал ) ;
конзола. Пријава ( 'Дешифрована вредност -> ' + декодирати ) ;

Према овом коду, прогласите функцију „ децоде_утф8() ” који садржи наведени параметар који представља комбинацију знакова која се декодира помоћу „ децодеУРИ() ” метод. Сада наведите вредност коју треба декодирати и позовите дефинисану функцију да бисте применили декодирање на „ УТФ-8 ” репрезентација.

Излаз

Овај исход имплицира да је претходно кодирана вредност одређена у складу са тим.

Приступ 3: Кодирање/декодирање УТФ-8 у ЈаваСцрипт-у помоћу регуларних израза

Овај приступ примењује кодирање тако да је вишебајтни уникод стринг кодиран у УТФ-8 више једнобајтних знакова. Слично, декодирање се изводи тако да се кодирани низ декодира назад у вишебајтне Уницоде знакове.

Пример 1: Кодирање УТФ-8 у ЈаваСцрипт-у
Код у наставку кодира вишебајтни уникод низ у УТФ-8 једнобајтне знакове:

функција енцодеУТФ8 ( вал ) {
ако ( тип вал != 'низ' ) бацити Нова ТипеЕррор ( 'Параметар' вал 'није низ' ) ;
конст стринг_утф8 = вал. заменити (
/[\у0080-\у07фф]/г , // У+0080 - У+07ФФ => 2 бајта 110иииии, 10зззззз
функција ( Икс ) {
био оут = Икс. цхарЦодеАт ( 0 ) ;
повратак Низ . фромЦхарЦоде ( 0кц0 | оут >> 6 , 0к80 | оут & 0к3ф ) ; }
) . заменити (
/[\у0800-\уфффф]/г , // У+0800 - У+ФФФФ => 3 бајта 1110кккк, 10ииииии, 10зззззз
функција ( Икс ) {
био оут = Икс. цхарЦодеАт ( 0 ) ;
повратак Низ . фромЦхарЦоде ( 0ке0 | оут >> 12 , 0к80 | оут >> 6 & 0к3Ф , 0к80 | оут & 0к3ф ) ; }
) ;
конзола. Пријава ( 'Кодирана вредност помоћу регуларног израза -> ' + стринг_утф8 ) ;
}
енцодеУТФ8 ( 'овде' )

У овом исечку кода:

  • Дефинишите функцију ' енцодеУТФ8() ” који садржи параметар који представља вредност која се кодира као „ УТФ-8 ”.
  • У својој дефиницији, примените проверу на прослеђену вредност која није стринг користећи „ тип ” оператор и вратите наведени прилагођени изузетак преко „ бацити ” кључна реч.
  • Након тога, примените „ цхарЦодеАт() ' и ' фромЦхарЦоде() ” за преузимање Уницоде првог знака у низу и трансформисање дате Уницоде вредности у знакове, респективно.
  • Коначно, позовите дефинисану функцију преношењем датог низа знакова да бисте ову вредност кодирали као „ УТФ-8 ” репрезентација.

Излаз

Овај излаз означава да је кодирање изведено на одговарајући начин.

Пример 2: Декодирање УТФ-8 у ЈаваСцрипт-у
У овој демонстрацији, низ знакова се декодира у „ УТФ-8 ” представљање:

функција децодеУТФ8 ( вал ) {
ако ( тип вал != 'низ' ) бацити Нова ТипеЕррор ( 'Параметар' вал 'није низ' ) ;
конст стр = вал. заменити (
/[\у00е0-\у00еф][\у0080-\у00бф][\у0080-\у00бф]/г ,
функција ( Икс ) {
био оут = ( ( Икс. цхарЦодеАт ( 0 ) & 0к0ф ) << 12 ) | ( ( Икс. цхарЦодеАт ( 1 ) & 0к3ф ) << 6 ) | ( Икс. цхарЦодеАт ( 2 ) & 0к3ф ) ;
повратак Низ . фромЦхарЦоде ( оут ) ; }
) . заменити (
/[\у00ц0-\у00дф][\у0080-\у00бф]/г ,
функција ( Икс ) {
био оут = ( Икс. цхарЦодеАт ( 0 ) & 0к1ф ) < '+стр);
}
децодеУТФ8('А А§А¨')

У овом коду:

  • Слично, дефинишите функцију „ децодеУТФ8() ” који има параметар који се односи на прослеђену вредност коју треба декодирати.
  • У дефиницији функције проверите стање стринга прослеђене вредности преко „ тип ” оператор.
  • Сада примените „ цхарЦодеАт() ” за преузимање Уницоде-а првог, другог и трећег низа знакова, респективно.
  • Такође, примените „ Стринг.фромЦхарЦоде() ” за трансформацију Уницоде вредности у знакове.
  • Исто тако, поновите ову процедуру поново да бисте преузели Уницоде знакова првог и другог стринга и трансформисали ове Уницоде вредности у знакове.
  • На крају, приступите дефинисаној функцији да бисте вратили декодирану вредност УТФ-8.

Излаз

Овде се може проверити да ли је декодирање урађено исправно.

Закључак

Кодирање/декодирање у УТФ-8 представљању се може извршити преко „ енодеУРИЦомпонент()” и ' децодеУРИЦомпонент() методе, „ енцодеУРИ() ' и ' децодеУРИ() ” или коришћењем регуларних израза.