ПОШУК ПО САЙТУ

utf-8 - кодування символів

Юнікод підтримує практично всі існуючінабори символів. Найкращою формою кодування набору символів Юнікоду є utf-8-кодування. У ній реалізована сумісність з ASCII, стійкість до спотворення даних, ефективність і простота обробки. Але про все по порядку.

форми кодування

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

У комп'ютерних системах цілі числа зберігаються восередках пам'яті розміром 8 біт (1 байт), 16 або 32 біт. Кожна форма кодування Юнікод визначає, яка послідовність осередків пам'яті представляє ціле число, відповідне конкретному символу. У стандарті представлені три різні форми кодування символів Юнікоду: 8, 16 і 32-бітових блоками. Відповідно, вони звуться utf-8, UTF-16 і UTF-32. Назва UTF розшифровується як формат перетворення Юнікоду. Кожна з трьох форм кодування є рівноправними засобами представлення символів Юнікоду, має переваги в різних областях застосування.

Дані кодування можуть бути використані дляподання всіх символів стандарту Юнікод. Таким чином, вони повністю сумісні для рішень, з різних причин використовують різні форми кодування. Кожна кодування може бути однозначно перетворена в будь-яку з двох інших без втрати даних.

utf 8 кодування

принцип ненакладення

Кожна з форм кодування Юнікоду розроблена зурахуванням неприпустимість часткового накладення. Наприклад, Windows-932 формує символи з одного або двох байтів коду. Довжина послідовності залежить від першого байта, тому значення лідируючого байта в послідовності з двох байтів і одиночного байта не перетинаються. Однак значення одиночного байта і замикає байта послідовності можуть збігатися. Це означає, наприклад, що при пошуку символу D (код 44) можна помилково знайти його входять до другої частини послідовності з двох байтів символу «Д» (код 84 44). Щоб з'ясувати, яка послідовність є правильною, програма повинна врахувати попередні байти.

Ситуація ускладниться, якщо ведучий і замикаєбайт співпадуть. Це означає, що для зняття неоднозначності буде проводитися зворотний пошук до досягнення початку тексту або однозначної послідовності коду. Це не тільки неефективно, але не захищене від можливих помилок, адже досить одного неправильного байта, щоб весь текст став нечитабельним.

Формат перетворення Юнікоду дозволяє уникнутиданої проблеми, тому що значення ведучої, замикає і одиночної одиниці зберігання інформації не збігаються. Завдяки цьому всі кодування Юнікоду підходять для пошуку і порівняння, ніколи не даючи помилкового результату через збіг різних частин коду символів. Той факт, що дані форми кодування дотримуються принцип ненакладення, відрізняє їх від інших мультибайтних східно кодувань.

Іншим аспектом неперетинання кодувань Юнікодує те, що кожен символ має чітко визначені межі. При цьому відпадає необхідність в скануванні невизначеного числа попередніх символів. Дану особливість кодувань іноді називають самосинхронізацією. Спотворення однієї одиниці коду введе до спотворення тільки одного символу, а навколишні символи залишаються недоторканими. У 8-бітному форматі перетворення, якщо покажчик посилається на байт, що починається з 10xxxxxx (замість двійкового коду), для пошуку початку символу потрібно від одного до трьох зворотних переходів.

кодування utf 8

узгодженість

Консорціум Юнікоду в повній мірі підтримує всі3 форми кодувань. Важливо не протиставляти utf-8 і Юнікод, адже всі формати перетворення - однаково правомірні втілення форм кодування символів стандарту Юнікод.

Байт-орієнтація

Для подання символу UTF-32 знадобиться одна 32-бітна одиниця коду, яка збігається з кодом Юникода. UTF-16 - від однієї до двох 16-бітних одиниць. А utf-8 використовує до 4 байт.

Кодування utf-8 створена для сумісності збайт-орієнтованими системами на основі ASCII. Велика частина існуючого програмного забезпечення та практика інформаційних технологій тривалий час спиралися на уявлення символів у вигляді послідовності байтів. Безліч протоколів залежить від незмінності кодування ASCII і використовує або уникає спеціальні керуючі символи. Простим способом адаптувати Юнікод до таких ситуацій можна, застосувавши 8-бітове кодування для представлення символів Юнікоду, еквівалентних будь-якому символу ASCII або керуючому символу. Для цього і призначена кодування utf-8.

Мінлива довжина

utf-8 - кодування змінної довжини, що складається з8-бітних одиниць зберігання інформації, старші біти яких позначають, до якої частини послідовності належить кожен окремий байт. Один діапазон значень відведений для першого елемента послідовності коду, інший - для наступних. Це забезпечує не перетинання кодування.

кодування символів utf 8

ASCII

utf-8-кодування повністю підтримує коди ASCII(0x00-0x7F). Це означає, що символи Юнікоду U + 0000-U + 007F конвертуються в єдиний байт 0x00-0x7F utf-8 і таким чином стають не відрізнятись від ASCII. Більш того, щоб уникнути багатозначності, значення 0x00-0x7F не використовуються більше ні в одному байті представлення символів Юнікоду. Для кодування неідеографіческіх символів, відмінних від ASCII, використовується послідовність з двох байтів. Символи діапазону U + 0800-U + FFFF представлені трьома байтами, а додаткові з кодами більше U + FFFF вимагають чотирьох байтів.

Галузь застосування

Кодуванні utf-8 зазвичай віддається перевага в протоколі HTML і йому подібним.

XML став першим стандартом з повною підтримкоюкодування utf-8. Організації, що займаються стандартизацією, теж її рекомендують. Проблема підтримки в адресах URL, відмінних від ASCII-символів, була вирішена, коли консорціум W3С і інженерна група IETF дійшли згоди про кодування всіх адрес URL виключно в utf-8.

Сумісність з ASCII полегшує перехід до новогопрограмному забезпеченню. З utf-8 працює більшість текстових редакторів, в тому числі JEdit, Emacs, BBEdit, Eclipse і "Блокнот" операційної системи Windows. Жодна інша форма кодування Юнікоду не може похвалитися такою підтримкою з боку інструментальних засобів.

Перевага кодування полягає в тому, що вонаскладається з послідовності байтів. З рядками utf-8 легко працювати в C та іншими мовами програмування. Це єдина форма кодування, що не вимагає мітки порядку байтів BOM або оголошення кодування в XML.

html кодування utf 8

самосинхронізація

В оточенні, що використовує 8-бітну обробку символів, в порівнянні з іншими багатобайтові кодуваннями, utf-8 має наступні переваги:

  • Перший байт послідовності коду містить інформацію про його довжині. Це підвищує ефективність прямого пошуку.
  • Спрощено процедуру знаходження початку символу, так як початковий байт обмежений фіксованим діапазоном значень.
  • Відсутня перетин значень байтів.

порівняння переваг

utf-8-кодування компактна. Але при застосуванні для кодування східно символів (китайських, японських, корейських, що використовують знаки китайського письма) використовуються 3-байтниє послідовності. Також utf-8-кодування поступається іншим формам кодування по швидкості обробки. А двоичная сортування рядків дає той же результат, що і двоичная сортування Юникода.

Схема кодування символів

Схема кодування символів складається з формикодування символів і способу побайтного розташування одиниць коду. Для визначення схеми кодування стандартом Юникода передбачено використання початкової мітки порядку байтів (BOM, Byte order mark).

При включенні BOM в utf-8 функція міткиобмежується тільки зазначенням на використання форми кодування. Проблеми визначення порядку байтів у utf-8 немає, так як її розмір одиниці кодування дорівнює одному байту. Використання BOM для даної форми кодування не є ні обов'язковим, ні рекомендованим. BOM може зустрічатися в текстах, конвертованих з інших кодувань, що використовують мітку порядку байтів, або для сигнатури кодування utf-8. Являє собою послідовність з 3 байтів EF16 BB16 BF16.

файл в кодуванні utf 8

Як задати кодування utf-8

В HTML кодування utf-8 встановлюється за допомогою наступного коду:

˂head˃

˂meta http-equiv = "Content-Type" content = "text / html; charset = utf-8" ˃

У PHP кодування utf-8 задається за допомогою функції header () на самому початку файлу після завдання значення рівня виведення помилок:

˂? Php

error_reporting (-1);

header ( "Content-Type: text / html; charset = utf-8");

Для підключення до баз даних MySQL кодування utf-8 встановлюється так:

˂? Php

mysql_set_charset ( "utf8");

В CSS-файлах кодування символів utf-8 вказується так:

@charset "utf-8";

зберегти в кодуванні utf 8

При збереженні файлів всіх типів вибираєтьсякодування utf-8 без BOM, інакше сайт працювати не буде. Для цього в програмі DreamWeave потрібно вибрати пункт меню «Модифікації - Властивості сторінки - Тема / Кодування», змінити кодування на utf-8. Потім слід перезавантажити сторінку, прибрати галочку з пункту «Підключити Юнікод сигнатури (BOM)» і застосувати зміни. Якщо який-небудь текст на сторінці або в базі даних був введений іншою формою кодування, то його потрібно ввести нові або перекодувати. При роботі з регулярними виразами обов'язково використовувати модифікатор u.

Також можна зберегти файл в кодуванні utf-8 в «Блокноті» ОС Windows. Після вибору пункту меню «Файл - Зберегти як ...» встановити необхідну форму кодування і зберегти файл в кодуванні utf-8.

В текстовому редакторі Notepad ++, якщо кодування відмінна від utf-8, через пункт меню «Перетворити в utf-8 без BOM» змінити кодування і зберегти в кодуванні utf-8.

кодування utf 8 без bom

альтернативи немає

В умовах глобалізації, коли політичні імовні кордони стираються, набори символів, які мають місцеві особливості, стають малопридатними. Юнікод є єдиним набором символів з підтримкою всіх локалізацій. А utf-8 - приклад правильної реалізації Юникода, яка:

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

З появою utf-8 дискусії про те, яка форма кодування або набір символів краще, стали безглузді.

</ P>
  • оцінка: