Перевірка кодування символів використовуючи валідатор

Питання

Як я можу перевірити чи правильне кодування символів мого документа використовуючи W3C HTML Валідатор?

Відповідь

Щоб переконатися, що всі отримувачі документа можуть його правильно відобразити й інтерпретувати, дуже важливо правильно вказати кодування символів ('charset'). Один зі способів це перевірити - використовувати W3C Сервіс Перевірки Розмітки. Валідатор зазвичай визначає кодування символів із HTTP заголовків та інформації в документі. Якщо валідатор не в змозі виявити кодування, то його можна буде вибрати на сторінці результатів валідатора за допомогою розкривного меню 'Кодування' (приклад).

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

Доречі

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

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

Зверніть увагу, що візуальна перевірка веб-сторінки за допомогою браузера без використання валідатор може провалитися, оскільки: