UTF-8 или ISO-8859-1 в XML - PullRequest
       14

UTF-8 или ISO-8859-1 в XML

5 голосов
/ 11 августа 2009

У нас есть приложение, которое берет текстовую строку, введенную пользователем в веб-форму, и упаковывает ее в XML. Просто чтобы немного запутать, XML отправляется как тело сообщения электронной почты Outlook.

Поскольку пользователи могут вставлять в веб-форму практически все, что угодно (обычно из Word), текстовая строка может содержать не-ASCII (7-битные) символы, например те, которые используются для открытия и закрытия двойных кавычек.

Строка передается по электронной почте без изменений, но когда мы используем синтаксический анализатор Microsoft XML, он жалуется (совершенно правильно), что в XML содержатся недопустимые символы.

Быстрое исправление - поместить кодировку = "iso-8859-1" в заголовок. Тем не менее, мне интересно, было бы лучше кодировать XML-файл в истинном формате UTF-8 с самого начала, так как я читал статьи, в которых утверждается, что было бы лучше для более гармоничного мира, если бы каждый XML-документ был закодирован в UTF-8.

Но ... возникнут ли у нас проблемы, поскольку документ XML фактически передается через текст сообщения электронной почты? Я понимаю, что UTF-8 - это система кодирования с переменной длиной байта, которую я предполагаю использовать 7-битный ASCII и escape-символы для обозначения «данных больше».

Другой вариант - установить UTF-8, но заменить не-ASCII-символы на & # nnn; формат.

Любые советы по этой довольно сложной области приветствуются.

Приветствия, Роб.

Ответы [ 2 ]

7 голосов
/ 11 августа 2009

Здесь, за пределами English-only-land {1}, я могу подтвердить, что UTF-8 отлично работает везде и так было уже много-много лет.У меня проблемы с запоминанием с тех пор, когда любые MTA наносили вред электронным письмам путем удаления 8-го бита (приводя к «изобретениям», таким как QP (которые в основном исправляли симптом, а не решали проблему)),Это произошло наверняка в середине 90-х, хотя UTF-8 быстро завоевал популярность и заменил iso-8859-1.Я не помню, когда я переключился, но я думаю, что это было по крайней мере до 2000 года.

Говоря о iso-8859-1, он не сможет охватить весь возможный вклад от ваших пользователей.В зависимости от языка могут потребоваться другие варианты iso-8859 (например, для финского и валлийского), и даже при этом семейство 8859 не поддерживает такие языки, как китайский.UTF-8, с другой стороны, должен охватывать все, поэтому я настоятельно рекомендую iso-8859-1.

{1} Это может повлиять на мой опыт, поскольку любая программа, не полностью поддерживающая UTF-8 будет считаться дерьмом и не будет использоваться здесь.

6 голосов
/ 11 августа 2009

Я бы, вероятно, попытался использовать UTF-8, когда это возможно - он просто покрывает большую площадь и более гибок, чем ISO-8859-1, который может подавиться, например. Уже восточноевропейские символы (попробуйте написать Jiři или что-то подобное в ISO-8859-1 - это с треском провалится).

Так что, если вы действительно хотите попытаться измениться (что я аплодирую!), Тогда я перейду к UTF-8 и вернусь к ISO-8859-1, только если вы действительно не можете заставить работать UTF-8.

MARC

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...