Як я можу перевірити чи правильне кодування символів мого документа використовуючи W3C HTML Валідатор?
Щоб переконатися, що всі отримувачі документа можуть його правильно відобразити й інтерпретувати, дуже важливо правильно вказати кодування символів ('charset'). Один зі способів це перевірити - використовувати W3C Сервіс Перевірки Розмітки. Валідатор зазвичай визначає кодування символів із HTTP заголовків та інформації в документі. Якщо валідатор не в змозі виявити кодування, то його можна буде вибрати на сторінці результатів валідатора за допомогою розкривного меню 'Кодування' (приклад).
Але часто, валідатор не скаржиться, навіть якщо виявлене або вибране неправильне кодування. Причина цього в тому, що багато кодувань дуже схожі, а валідатор перевіряє тільки синтаксис розмітки і не може вирішити чи декодований текст має сенс чи ні. Щоб переконатися, що ви маєте правильне кодування, яке означає, що документ буде коректно відображатися для читачів, використовуйте наступні пункти:
Якщо обрані або виявлені кодування: US-ASCII
, UTF-8
, UTF-16
, або iso-2022-jp
(Japanese JIS), і валідатор не скаржиться на проблеми з кодуванням, то є дуже висока вірогідність того, що кодування обране
правильно. Зверніть увагу, що US-ASCII
є строгою підмножиною кодування UTF-8
, і тому, якщо US-ASCII
працює, то UTF-8
також
буде працювати.
Для будь-якого іншого кодування необхідний візуальний контроль. Виберіть опцію Show Source (показати джерело) із Extended Interface (Розширеного інтерфейсу) валідатора, і перевірте чи правильно відображаються в тексті non-ASCII символи. Для сторінок на іноземних мовах, це, як правило, можна зробити досить швидко. Для сторінок на Англійській мові з усього декількома non-ASCII символами, це може бути більш складним завданням.
Наприклад, якщо ви намагалися інтерпретувати головну сторінку W3C як iso-8859-1, вам, можливо, доведеться переглянути джерело майже до кінця для того, щоб знайти такий текст, як '©' та '®' і побачити, що це неправильний вибір. (Звичайно, та сторінка, з самого початку вказує валідатору, що вона закодована в UTF-8, і тому насправді вам не потрібно ще щось перевіряти.)
У деяких випадках більш ніж одне кодування буде адекватно представляти символи в документі. Наприклад, є деяке
перекриття між iso-8859-1
(Latin-1, Західна Європа) та iso-8859-2
(Latin-2, Східна Європа), та інші кодування в цій
серії. Якщо після ретельної перевірки, ви не можете знайти різницю, то будь-який вибір буде підходящим. Близька подібність цих кодувань з точки зору моделей байтів
і з точки зору фактично закодованих символів пояснює чому тільки візуальний огляд може допомогти переконатися чи кодування правильне.
Якщо жодне з запропонованих валідатором кодувань не працює, то ви або маєте сторінку в кодуванні, яке валідатор (поки) не підтримує, або якось, текст в декількох різних кодуваннях змішався на сторінці. У першому випадку, напишіть на validator mailing list (список розсилки валідатора) (public archive (громадський архів)), щоб ваше кодування символів додали. В останньому випадку, ви повинні виправити свою сторінку, тому що кожна Веб-сторінка може використовувати тільки одне кодування символів.
Валідатор не може працювати без інформації про кодування тому, що SGML або XML перевірка основано на перевірці послідовностей символів в документі, але те, що валідатор приймає в якості вхідних даних - просто послідовність байтів. Знання кодування символів дозволяє валідатору перетворювати байти в символи. Загалом, все це ж саме дійсно для всіх інших видів приймачів, включаючи браузери. Якщо символи визначені не правильно, то Веб браузер відображатиме не коректну інформацію.
Валідатор робить це шляхом перетворення з вказаного кодування на UTF-8, і використовує UTF-8 внутрішньо. Якщо перетворення в UTF-8 не вдається тому, що окрема послідовність байтів не може з'явитися у вхідному кодувані, то валідатор видає повідомлення про помилку. В UTF-8 для інформації на вході, валідатор перевіряє чи дійсно тільки UTF-8 послідовності байтів використовуються.
Зверніть увагу, що візуальна перевірка веб-сторінки за допомогою браузера без використання валідатор може провалитися, оскільки:
<img>
), який треба перевірити.Посібник, Обробка кодування символів в HTML і CSS
Зареєстровані кодування символів (charsets) в IANA (валідатор підтримує тільки підмножину, яка широко застосовується, і, переважно, підтримує тільки імена, а не псевдоніми)
Посилання по темі, Налаштування сервера
Посилання по темі, Розробка HTML і CSS
Посилання по темі, Розробка SVG