Прискорююча кнопка n назначена для пропусків при навігації по сторінкам. Пропуск для переходу на початок контента.

Даний документ є перекладом. У випадку будь-яких невідповідностей і помилок остання версія документу англійською мовою повинна розглядатися як офіційна. Першопочаткове авторське право належить W3C, як це вказано нижче.

Перекладач: Alexandr, Art life

s_gotoW3cHome Інтернаціоналізація
 

Кодування символів для початківців

Аудиторія: автори контенту, користувачі і ті, хто не знає, що таке кодування символів, і хоче переглянути коротке резюме про його вплив на них.

Питання

Що таке кодування, і чому ви повинні бути уважними?

Відповідь

По-перше, чому ви повинні бути уважними?

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

Наприклад, ви хочете, щоб текст виглядав наступним чином:

mojibake1.gif

але фактично він може показуватися так:

mojibake2.gif

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

Так що ж таке кодування символів?

Слова й речення в тексті створюються з символів. Приклади символів включають літеру á Латинського алфавіту або Китайський ієрогліф або символ Деванагарі .

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

Символи згруповані в набір символів (також називається репертуар). Потім його назвали кодуванням символів коли кожному символу присвоюється певний номер, так зване code point. (місце коду). Ці місця коду будуть представлені на комп'ютері одним або декількома байтами .

В основному, це означає, що всі символи, які зберігаються на комп'ютерах використовують код, схожий на шифри, що використовуються у шпигунстві. Кодування символів - ключ для відкриття коду (тобто crack). Це множина відображень між байтами, які відображають числа на комп'ютері і символи в кодуванні символів. Без цього ключа, дані виглядають як сміття.

charset - суперечливий термін, його часто використовують щоб пояснити що таке кодування символів. Ви повинні знати про це використання, але коли це можливо, використовувати термін кодування символів.

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

Наприклад, в кодуванні символів ISO 8859-1 (також відомому як Latin1) значення десяткового місця коду для букви é - 233. В ISO 8859-5, Те саме місце коду відображає такий символ Кирилиці, як щ. Ці набори символів містять менше 256 символів і відображають місця коду безпосередньо в байтах. Так місце коду зі значенням 233 представляється одним байтом із значенням 233. Однак зауважимо, що цей байт може відображати або é або щ, в залежності від контексту.

Є й інші способи обробки символів з діапазону скриптів. Наприклад, з допомогою набору символів Unicode ви можете відобразити обидва символи в тому самому наборі. Насправді, Unicode в одному наборі містить більшість символів, що вам ймовірно, можуть знадобитися. Хоча значення 233 як і раніше відображає é, проте такий символ Кирилиці, як щ тепер має таке значення місця коду, як 1097. Це занадто велике число, щоб представляти його одним байтом*. Якщо для Unicode тексту ви використовуєте кодування символів UTF-8, то символ щ буде відображатися двома байтами, але значення місця коду це не просто похідна від поєднання двох байтів – потрібні дещо складніші декодування. Деякі символи Unicode відображають один, три або чотири байти в кодуванні UTF-8.

UTF-8 - найбільш поширений спосіб відображення тексту Unicode на веб сторінках. Але UTF-8 - єдиний можливий спосіб відображення символів Unicode. Іншими словами, одне місце коду в наборі символів Unicode може фактично відображатися різною послідовністю байтів, в залежності від кодування, що було використано для документу. Місця коду Unicode можуть відображатися байтами при використанні будь-якого із даних кодувань: UTF-8, UTF-16 або UTF-32. Такий символ Деванагарі , як , с місцем коду 2325 (який займає 915 місце в шістнадцятковій системі числення), відображатиметься двома байтами при використанні кодування UTF-16 (09 15), трьома байтами у UTF-8 (E0 A4 95), або чотирма у UTF-32 (00 00 09 15).

* Більшість байтів в наш час складається із 8 біт. Є тільки 28 (тобто 256) унікальних способа поєднання 8 біт.

Відзначимо також, числові значення місць коду, як правило, виражаються в шістнадцятковій системі числення - тобто основані на 16. Наприклад, 233 у шістнадцятковій формі буде E9. Значення місця коду в Unicode, як правило, записується у вигляді U+00E9.

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

Проте більшу частину часу вам не потрібно буде знати подробиці. Ви просто повинні врахувати пораду із розділу Як це на мене впливає? , що знаходиться нижче.

Як пристосовуються до цього шрифти?

Шрифт - колекція гліфів, тобто визначення форм, які використовуються для відображення символів.

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

Обумовлений шрифт як правило, охоплює один набір символів, або тільки підмножину всіх символів у наборі, як у випадку великого набору символів Unicode. Якщо ваш шрифт не має гліфа для окремого символа, деякі додатки шукатимуть пропущений символ в інших шрифтах вашої системи (що означатиме, що гліф буде відрізнятися від вашого тексту, буде схоже на шрифт ransom note). В іншому випадку замість нього ви зазвичай будете бачити квадрат, знак питання або інший символ. Наприклад:

mojibake3.gif

Як це на мене впливає?

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

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

Авторам контенту також необхідно з'ясувати, як призначити кодування символів , що використовується для формату документа з яким вони працюють. Вам також може знадобитися перевірити чи з правильними призначеннями HTTP ваш сервер обробляє документи.

Розробники повинні переконатися в тому, що різні частини системи можуть взаємодіяти одна з одною, розуміти, які кодування символів використовуються, і підтримувати всі необхідні кодування і символи.

Наведені нижче посилання забезпечують в деякій мірі подальше ознайомлення з цими темами.

Доречі

Варто прочитати статтю Кодування символів: Основні поняття , так як вона ознайомлює із такими суміжними темами, як Unicode, UTF-8, Набори символів, Кодування наборів символів і кодування, набір символів документа, екрановані символи і заголовки HTTP.

Розкажіть нам про те, що Ви думаєте.

Підписатися на RSS джерело.

Нові джерела

Новини головної сторінки

Twitter (Новини головної сторінки)

‎@webi18n

Додаткові матеріали

Автор: Richard Ishida, W3C. Перекладач: Alexandr, Art life.

Допустимий XHTML 1.0!
Допустимий CSS!
Кодування UTF-8!

Переклад Англійського контенту від 2010-09-08. Переклад останнього оновлення 2011-03-05 21:00 GMT

Для перегляду історії внесення змін до перекладу натисність qa-what-is-encoding в блоге i18n.