Кодирование html в ANSI против UTF-8 без спецификации

В чем разница между написанием, например. php или html в форматах Ansi и UTF-8 без спецификации, а затем загрузить их на веб-сервер? Оба документа имеют мета UTF-8 в формате .

Если кто-то пишет просто с помощью блокнота, он должен выбрать Ansi, потому что блокнот не предлагает UTF-8 без Byde-Order-Mark.


person Lukáš Kozák    schedule 24.08.2013    source источник


Ответы (2)


Разница в том, что UTF-8 и «ANSI» (неправильное название Microsoft для различных 8-битных кодировок) — это совершенно разные кодировки, хотя они совпадают для диапазона кодов ASCII, от 0x00 до 0x7F.

Неправильно помечать файл «ANSI» как кодированный UTF-8. Ошибка не вызывает заметных последствий, если данные на самом деле содержат только символы ASCII или, в большинстве случаев, если файл отправляется с заголовками HTTP, указывающими правильную кодировку.

Нет причин не использовать спецификацию для HTML-файлов в кодировке UTF-8. Страницы, утверждающие обратное, основаны либо на информации о браузерах, утративших всякое практическое значение много лет назад, либо на смешении HTML с PHP. В файле PHP BOM может вызвать проблемы, потому что программное обеспечение PHP неправильно обрабатывает BOM, т. е. не удаляет его при вставке содержимого одного файла в другой.

Блокнот действительно не может сохранить файл в формате UTF-8 без спецификации. Поэтому при создании или редактировании файлов PHP используйте другие программы, такие как Notepad++. Если вам приходится использовать Блокнот, вам просто нужно адаптироваться к ограничениям: используйте «ANSI» (после того, как выясните, что это такое в вашей среде — это может быть windows-1252 или что-то еще), объявите его в заголовках HTTP и meta теги и используйте ссылки на символы для представления символов, которые не могут быть представлены в «АНСИ».

person Jukka K. Korpela    schedule 24.08.2013

Разница в том, что если вы запишете свой файл в какой-либо 8-битной кодовой странице, а затем забудете преобразовать его в UTF-8, люди могут увидеть вашу веб-страницу сломанной, потому что вы установили кодировку UTF-8 в мета; и чтобы применить это исправление ошибки в спешке, вы не можете получить доступ к файлу на месте с помощью SFTP или WinSCP, потому что вам придется сначала снова преобразовать в 8-битную кодовую страницу.

Кроме того, UTF-8 — это Unicode, и поддерживается весь диапазон символов, а в кодовых страницах «ANSI» — нет. Не все документы Unicode могут быть преобразованы обратно в кодовые страницы «ANSI», поэтому вы не можете редактировать их таким образом.

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

person Antti Haapala    schedule 24.08.2013
comment
Одна странная хорошая вещь, которую может сделать блокнот, - это открывать файлы unicode no bom, которые иногда случаются в Windows. Он тоже может открывать utf8 no bom, но не сохраняет их. - person js2010; 13.05.2019