muzruno.com

UTF-8 - кодиране на знаци

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

Форми на кодиране

Компютрите работят с номера не само като абстрактни математически обекти, но и като комбинации от единици за съхранение и обработка на информационни байтове с фиксиран размер и 32-битови думи. Стандартът за кодиране трябва да вземе това предвид при определяне на начина на представяне символи по номера.

В компютърните системи цели числа се съхраняват в клетки с памет от 8 бита (1 байт), 16 или 32 бита. Всяка форма за кодиране на Unicode определя коя последователност от клетки от паметта представлява цяло число, съответстващо на определен знак. Стандартът предоставя три различни форми на кодиране на Unicode знаци: 8, 16 и 32-битови блокове. Съответно те се наричат ​​UTF-8, UTF-16 и UTF-32. Името UTF означава формат на преобразуване в Unicode. Всяка от трите форми на кодиране е равно средство за представяне на символи на Unicode, има предимства в различни приложения.

Тези кодировки могат да се използват, за да представят всички знаци на стандарта Unicode. По този начин те са напълно съвместими за решения по различни причини, използвайки различни форми на кодиране. Всяко кодиране може еднозначно да се преобразува в други два без загуба на данни.

utf 8 кодиране

Принцип на неналагане

Всеки от формулярите за кодиране на Unicode е създаден, като се взема предвид недопустимостта на частичното припокриване. Например, Windows-932 генерира символи от един или два байта код. Дължината на последователността зависи от първия байт, така че водещите байт стойности в последователност от два байта и един байт не се пресичат. Обаче стойностите на единичния байт и затварящия байт на последователността могат да бъдат еднакви. Това означава, например, че при търсене на символа D (код 44), можете да го откриете погрешно в втората част от последователността от два байта от символа "D" (код 84 44). За да определите коя последователност е правилна, програмата трябва да вземе предвид предишните байтове.

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

Форматът на преобразуване в Unicode избягва този проблем, защото стойностите на водещото, крайното и единичното устройство за съхранение на информация не съвпадат. Поради това всички кодировки на Unicode са подходящи за търсене и сравняване, като никога не дават грешен резултат поради съвпадението на различни части от кода на знака. Фактът, че тези кодиращи форми спазват принципа на непризнаване, ги отличава от други многобайтови източноазиатски кодировки.

Друг аспект на несвързаността Unicode символни набори е, че всеки герой има ясно определени граници. Това премахва необходимостта от сканиране на неопределен брой предишни знаци. Тази характеристика на кодирането понякога се нарича "самосинхронизация". Изкривяването на една единица код ще доведе до изкривяване само на един знак, а околните знаци остават непокътнати. В превръщането на формат 8-битов, ако сочи указателят на байт, като се започне с 10xxxxxx (в двоичен код), за да открият се изисква в началото на символа за една до три обратни преходи.

кодиране на utf 8

съгласуваност

Уникод консорциумът напълно поддържа всички 3 кодиращи формуляра. Важно е да не се противопоставяте на UTF-8 и Unicode, защото всички формати за преобразуване са еднакво легитимни изпълнения на формуляри за кодиране на Unicode знаци.

Байт ориентиране

За да представите символа UTF-32, ви е необходима една 32-битова единица код, която съответства на кода Unicode. UTF-16 - от един до два 16-битови единици. И UTF-8 използва до 4 байта.

Кодирането на UTF-8 е предназначено за съвместимост със байтови ориентирани системи, базирани на ASCII. Повечето от съществуващите практики в областта на софтуерните и информационните технологии отдавна разчитат на представянето на символите под формата на последователност от байтове. Много протоколи зависят от непроменените ASCII кодиране и използва или избягва специални знаци за контрол. Един лесен начин за привеждане на Unicode в такива ситуации е използването на 8-битово кодиране, което да представлява символи на Unicode, еквивалентни на всеки ASCII символ или контролен знак. За целта е предназначено кодирането на UTF-8.

Променлива дължина

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

кодиране на данни utf 8

ASCII

Кодирането на UTF-8 напълно поддържа ASCII кодове (0x00-0x7F). Това означава, че символите Unicode U + 0000-U + 007F се превръща в един байт 0x00-0x7F UTF-8 и по този начин стават неразличими от ASCII. Освен това, за да се избегне двусмисленост, стойностите 0x00-0x7F вече не се използват във всеки байт на символното представяне на Unicode. За кодиране на неидеографски символи, различни от ASCII, се използва поредица от два байта. Символи варират U + 0800-U + FFFF са представени от три байта, и допълнителни кодове с повече от U + FFFF изискват четири байта.

Обхват на приложение

Кодирането на UTF-8 обикновено се предпочита в HTML протокола и подобно на него.

XML стана първият стандарт с пълна поддръжка за кодиране на UTF-8. Организациите, участващи в стандартизацията, също го препоръчват. Проблемът с поддържането на URL адреси, различни от ASCII символите, беше решен, когато консорциумът на W3C и инженерната група на IETF се съгласиха да кодират всички URL адреси изключително в UTF-8.

Съвместимостта с ASCII улеснява прехода към нов софтуер. С UTF-8 работят повечето текстови редактори, включително JEdit, Emacs, BBEdit, Eclipse и Notepad на операционната система Windows. Никаква друга форма на Unicode кодиране не може да се похвали с такава подкрепа от инструментите.

Предимството на кодирането е, че то се състои от последователност от байтове. С UTF-8 низове е лесно да работите в C и други програмни езици. Това е единствената форма на кодиране, която не изисква маркиране на реда на байтове на BOM или декларация за кодиране в XML.

html кодиране utf 8

самостоятелно синхронизация

В среда, използваща 8-битова обработка на символи, в сравнение с други многобайтови кодировки, UTF-8 има следните предимства:

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

Сравнение на предимствата

Кодирането на UTF-8 е компактно. Но когато кандидатствате за кодиране на източноазиатски символи (китайски, японски, корейски, използващи китайски знаци) се използват 3-байтови последователности. Също така, кодирането на UTF-8 е по-лошо от другите форми на кодиране чрез скорост на обработка. Сортирането на двоични низове води до същия резултат като двоичен сортинг Unicode.

Схема за кодиране на знаци



Схемата за кодиране на знаци се състои от форма за кодиране на знаци и метод за подреждане на кодовите единици по байт-пиксел. За да се определи схемата на кодиране с стандарта Unicode, се използва първоначалната марка за поръчка на байт (BOM, марка за поръчка Byte).

Когато BOM е включена в UTF-8, функцията на етикета е ограничена само чрез посочване на използването на формата за кодиране. Проблемът при определяне на реда на байтовете в UTF-8 не е такъв, тъй като неговият размер на кодиращия елемент е равен на един байт. Използването на BOM за този кодиращ формуляр не е нито задължително, нито препоръчително. BOM може да възникне в текстове, преобразувани от други кодировки, които използват знака за поръчка на байт, или за подпис на кодиране на UTF-8. Това е поредица от 3 байта на EF16 BB16 BF16.

файл в utf 8 кодиране

Как да зададете кодиране на UTF-8

В HTML кодиране UTF-8 се инсталира чрез следния код:

глава

˂мета http-equiv = "Съдържание" съдържание = "текст / html-charset = utf-8" ˂

В PHP кодирането на UTF-8 се настройва с функция header () в самото начало на файла след задаване на стойността на изходното ниво на грешката:

˂? Php

error_reporting (-1);

заглавие ("Content-Type: text / html- charset = utf-8 `);

За да се свържете с MySQL бази данни, кодирането на UTF-8 е зададено както следва:

˂? Php

mysql_set_charset (`utf8`);

В CSS файловете кодирането на знаци UTF-8 се определя, както следва:

@scharset "utf-8";

освен като utf 8

Когато записвате файлове от всички видове, е избрано кодиране UTF-8 без BOM, в противен случай сайтът няма да работи. За да направите това, в програмата DreamWeave изберете елемента от менюто "Modifications - Page Properties - Title / Coding", променете кодирането на UTF-8. След това трябва да презаредите страницата, да махнете отметката от квадратчето "Connect Unicode Signatures (BOM)" и да приложите промените. Ако някой текст на страницата или в базата данни е въведен от друг формуляр за кодиране, то трябва да бъде повторно въведен или повторно кодиран. Когато работите с регулярни изрази, задължително е да използвате u модификатора.

Също така можете да запазите файла в кодиране UTF-8 в Windows Notepad. След като изберете елемента от менюто "Файл - Запиши като ..." задайте необходимия формат за кодиране и запазете файла в кодиране UTF-8.

В текстов редактор Notepad ++, ако зададете различни от UTF-8, чрез опцията в менюто "Преобразуване в UTF-8 без BOM» променят характера и спасяване в UTF-8.

кодиране на utf 8 без bom

Няма алтернатива

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

  • поддържа широка гама от инструменти, включително съвместимост с ASCII кодиране;
  • е устойчива на корупция на данните;
  • лесен и ефективен при обработката;
  • не зависи от платформата.

С появата на UTF-8 дискусиите за коя форма на кодиране или набор от символи са по-добри са станали безсмислени.

Споделяне в социалните мрежи:

сроден