Я привык вставлять первую строку всех XML-файлов:
<?xml version="1.0" encoding="ISO-8859-1"?>
Я делал это почти не задумываясь, но потом понял, что буквы с ударением в испанском языке выглядят плохо. Например, в Хроме:
Оттуда я решил это, используя:
<?xml version="1.0" encoding="utf-8"?>
Однако Википедия определяет ISO-8859-1 как:
ISO 8859-1 — это стандарт ISO , определяющий кодировку латинского алфавита , включая диакритические знаки (такие как буквы с ударением, ñ, ç) и специальные буквы (такие как ß, Ø), необходимые для...
и перечисляет все испанские символы.
Спросить
Почему это выглядит плохо в Chrome и что encoding
мне следует использовать, чтобы включить текст на испанском языке?
У Chrome нет проблем с отображением исходно-кодированного текста как ISO-8859-1, но он не может догадаться, что используется именно эта кодировка, если вы явно не укажете ее.
Рассмотрим следующий файл:
Вот как это выглядит в Chrome:
Это при условии, что текстовый редактор, использованный для создания файла, фактически сохранил его в ISO-8859-1, конечно.
Что касается вопроса «Какую кодировку мне следует использовать?», то это действительно зависит от контекста. Если верно, что либо 1) генератор и потребитель текста договариваются об используемой кодировке, либо 2) существует явный механизм для демонстрации кодировки текста (директива
<?xml?>
для XML-файлов или заголовокContent-Type
для MIME и HTTP), проблем не будет.Тем не менее, в настоящее время, похоже, существует неофициальный консенсус в отношении использования UTF-8 в качестве кодировки по умолчанию для всего по ряду причин, которые перечислены на таких сайтах, как этот: http://utf8everywhere.org .
Обе кодировки работают для вас.
Проблемы с кодировкой в большинстве случаев возникают из -за того, что файл не сохранен с той кодировкой, которая указана в коде файла .
Обычно в используемом вами текстовом процессоре есть возможность сохранить файл с нужной вам кодировкой. Если между обоими вариантами есть расхождения, это нормально, что это выглядит не очень хорошо.
Другая проблема, менее распространенная, может заключаться в том, что отправляются заголовки HTTP, указывающие на другую кодировку.
Короче говоря, вы должны убедиться, что все указания на кодировку имеют одинаковую информацию.
Набранный вами текст на самом деле находится в
utf-8
, и вы обращаетесь с ним так, как если бы он былiso-8859-1
.Ясная подсказка заключается в том, что на каждый символ с диакритическим знаком приходится 2 байта.
Для XML рекомендуется использовать
utf-8
. Спецификация XML предписывает поддержкуutf-8
(ужеutf-16
, но я бы рекомендовал использовать ееutf-8
вместо этого).Помимо того, что прокомментировали коллеги, внутри
Chrome
вы можете указать кодировку при отображении документа:Лучший вариант, я бы настаивал, это UTF-8 . Причина в том, что UTF-8 позволяет кодировать все символы стандарта Unicode в одном документе, не прибегая к escape-последовательностям в синтаксисе формата документа (в данном случае XML).
Второй лучший вариант — ISO-8859-15 . Этот код является новой версией старого ISO-8859-1 с небольшими изменениями. Но среди этих изменений есть очень важное:
И этот пример показывает, почему UTF-8 — лучший выбор. UTF-8 позволяет кодировать любой текст в формате Unicode, доминирующем международном стандарте, к которому периодически добавляются новые символы. Приложение, использующее кодировку UTF-8, обычно не требует изменений при введении новых символов, таких как символ евро. Кроме того, с UTF-8 документ может смешивать текст, написанный на разных языках. С UTF-8 вы можете просто написать китайский/испанский словарь, но ни ISO-8859-15, ни ISO-8859-1 не допускают такого использования.
Чтобы убедиться, что файл зашифрован правильно, используйте редактор, например Notepad++ или аналогичный. Иногда вы можете иметь базу данных в utf8, текст в utf8, декларации в utf8 и всю свою жизнь в utf8, но если файл был сохранен как iso-8859-1, это того стоило...