Чудесата на Unicode – символи, които не са нито с горен, нито с долен регистър

Най-четени

Даниел Десподов
Даниел Десподов
Новинар. Увличам се от съвременни технологии, информационна безопасност, спорт, наука и изкуствен интелект.

Оригиналът е на Raymond Chen.

Ако започнете да изучавате стандарта Unicode, може с изненада да откриете, че някои знаци имат разлики в регистрите, въпреки че самите те не са нито с горен, нито с долен регистър.

Ооооо, мистериозно и плашещо.

С други думи, това е символът c, който има следните свойства:

toUpper(c) ≠ toLower(c), обаче
c ≠ toUpper(c) и c ≠ toLower(c)

Честито! Поздравления, открихте мистериозния трети случай: случаят Title case.

Някои Unicode символи заемат една кодова единица, но представляват два графични символа, съединени заедно. Така например Unicode символът dz (U+01F1 LATIN SMALL LETTER DZ) изглежда като два Unicode символа един до друг: dz (U+0064 LATIN SMALL LETTER D, последвана от U+007A LATIN SMALL LETTER Z).

Тези диграфи са символи на азбуките на някои езици, по-специално на унгарския. В тези езици диграфът се счита за отделна буква от азбуката. Например, тук са първите десет букви от унгарската азбука:

aábccsddzdzseé

Тези диграфи (и един триграф) имат три форми.

ФормаРезултат
Горен регистърDZ
Title caseDz
Долен регистърdz

В кодирането на Unicode са включени четири диграфа.

Горен регистърTitle caseДолен регистър
DŽDždž
LJLjlj
NJNjnj
DZDzdz

Но чакайте, ако имаме кодова единица в Unicode за диграфа dz, защо няма такава за диграфа cs или триграфа dzs? Какво толкова специално има в dz?

Тези диграфи дължат съществуването си в Уникод не на унгарския, а на сърбохърватския език. Сърбохърватският език се пише както на латиница (хърватски), така и на кирилица (сръбски), а тези диграфи позволяват взаимна недвусмислена транслитерация между тях.

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

Допълнение: фактът, че на унгарски език „dz“ се счита за една буква, означава, че ако въведете низа за търсене „mad“, той няма да съвпадне с „madzag“ (което означава „въже“), защото „dz“ в „madzag“ е една буква, а не „d“, последвано от „z“, по същия начин „lav“ няма да съвпадне с думата „law“, просто защото първата част на буквата „w“ изглежда като „v“. Още един неочакван резултат, ако по погрешка използвате буквално търсене по подниз вместо търсене с отчитане на местоположението.

Аз получих тази информация от Unicode Standard, версия 15.0, глава 7: „Europe I“, раздел 7.1: „Latin“, подраздел „Latin Extended-B: U+0180-U+024F“, подподраздел „Croatian Digraphs Matching Serbian Cyrillic Letters“.

За българския език в тази статия няма нито дума.

АбонаментВсичко важно от света на технологиите, директно в пощата ти.

С абонирането приемате нашите Условия и Политика за поверителност. Може да се отпишете с един клик по всяко време.


Коментирайте статията в нашите Форуми. За да научите първи най-важното, харесайте страницата ни във Facebook, и ни последвайте в Google Новини, TikTok, Telegram и Viber или изтеглете приложението на Kaldata.com за Android, iPhone, Huawei, Google Chrome, Microsoft Edge и Opera!

Нови ревюта

Подобни новини