Если я использую Unicode на сайте ISO-8859-1, как это будет интерпретироваться браузером? - PullRequest
1 голос
/ 29 мая 2010

Итак, у меня есть сайт, использующий кодировку ISO-8859-1, и я не могу это изменить. Я хочу быть уверенным, что содержимое, которое я ввожу в веб-приложение на сайте, будет правильно проанализировано. Парсер работает на символьной основе. Я также не могу изменить парсер, я просто пишу файлы для его обработки. Содержимое в моем файле, которое я сообщаю приложению для отображения после синтаксического анализа, содержит символы Unicode (или, по крайней мере, я так полагаю, даже если они были созданы альтернативными кодами Windows, сопоставленными с CP437). Использование сущностей не вариант из-за посимвольной операции парсера. Единственные символы, которые синтаксический анализатор экранирует при выводе, - это чувствительные к разметке символы, такие как амперсанд, меньше и больше символов. Я бы просто пошел дальше и изложил это, чтобы увидеть, как это выглядит, но результаты можно увидеть только в публикации, которая должна потратить пару дней, чтобы получить одобрение и тому подобное, и это потребовало бы слишком много всего лишь для теста. .

Итак, если коротко, если я скажу сайту выводить ▼ ÇÑ ¥ ☺☻ на сайт с метатегом, указывающим, что он должен использовать ISO-8859-1, браузер автоматически обнаружит Unicode и отобразит это или он буквально переведет его как ISO-8859-1 и получит другой набор символов?

ОБНОВЛЕНИЕ: Я сделал временный тестовый сайт в http://doorstop.csh.rit.edu/home/testing, где я сделал тестовый файл в Notepad ++, используя UTF-8 без спецификации, но использовал метатег, который устанавливает кодировку ISO-8859-1.

Ответы [ 2 ]

2 голосов
/ 29 мая 2010

Если вы отправите UTF-8 на что-то, ожидаемое ISO-8859-1 , тогда да, вы получите Моджибаке : (

Учтите, что последовательность UTF-8 вводится просто с 8-битным символом с установленным старшим битом (т. Е. Значение символа> 127). Как что-то, ожидающее, что простая 8-битная кодировка символов решит, что определенная последовательность должна интерпретироваться как UTF-8, а не кодировка, которую ей сказали использовать?

1 голос
/ 29 мая 2010

Единственные символы, которые синтаксический анализатор экранирует при выводе, являются чувствительными к разметке символами, такими как амперсанд, меньше и больше символов.

Все, что находится за пределами ISO-8859-1 , может вызвать проблемы. HTML, закодированный как ISO-8859-1, может отображать символ типа & # x25bc; & # x263a; & # x263b;, но только при экранировании их как ▼☺☻. В противном случае они просто выходят за рамки кодировки.

Символы & # x00c7; & # x00d1; & # x00a5; поддерживаются ISO-8859-1 и не должны вызывать проблем в правильно реализованной системе.

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

Unicode - это набор символов, поддерживаемый несколькими кодировками. Например, U + 263a & # x263a; закодированный как UTF-8 становится байтами e2 98 ba, которые будут декодированы как & # x00e2; & # x98; & # xba; если рассматривается как ISO-8859-1.

...