Вы правы, UTF-8 — хороший выбор для веб-приложений.
Кодирование — это метаинформация для обрабатываемых данных. Пока вы знаете кодировку (двоичных) данных, вы знаете, с чем имеете дело. Начинаешь теряться, если не знаешь кодировку. Я часто называю это цепочкой, если цепочка кодирования разорвана, данные будут разорваны. Это справедливо как для отображения данных, так и для безопасности.
Как правило, PHP является двоичным, именно контекст/вы указываете кодировку (например, как вы сохраняете файлы исходного кода php).
Итак, давайте займемся коротким (и неполным) списком:
ОС
Переменные среды могут сообщить вам об используемой локали и кодировке. Например, файловые системы имеют свою кодировку для имен файлов и каталогов. Я не очень уверен в этом вопросе, обычно мы пытаемся назвать наши файлы на английском, чтобы использовать только символы в диапазоне US-ASCII, что безопасно для расширенных латинских кодировок, таких как ISO-8859-1 в вашем случае, а также для UTF-8.
Просто помните об этом, когда вы сохраняете файлы, загруженные вашими пользователями: просто отфильтруйте имена файлов по основным буквам и знакам препинания, и у вас почти не будет проблем (a-z, A-Z, 0-9, ., -, _), даже сделайте их строчными для визуального восприятия. целей.
Если вы чувствуете, что это ухудшает удобство использования, а файловая система не предлагает диапазон символов Unicode, как в UTF-8, вы можете вернуться к простым кодировкам, таким как rawurlencode (процентное кодирование, триплет) и предлагать файлы для скачивания, разрешая это имя на диск.
Обычно вам просто нужно иметь дело с тем, что у вас есть. Начните спрашивать обычного системного администратора или программиста о кодировке символов, и большинство из них скажет вам, что на самом деле их это не интересует. Естественно, это субъективно, но если вам нужно, чтобы кто-то что-то настроил для вас, это может иметь значение.
HTML
Это просто не зависит от PHP, речь идет о выводе, который обеспечивают ваши скрипты, так что это поле работы.
Правило большого пальца: укажите это. Если вы не указали его (файлы HTML, файлы CSS, файлы Javascript), не ожидайте, что он будет работать точно. Просто сделай это тогда. Кодирование - это цепочка, если есть много компонентов, убедитесь, что каждый знает о своей кодировке. В противном случае браузеры могут только догадываться. UTF-8 - это хороший выбор, но наша работа состоит в том, чтобы позаботиться о том, чтобы сделать его точным и четко определенным.
Настройки PHP
Как правило, начните читать файл php.ini, который поставляется с пакетом PHP вашего дистрибутива Linux. Он поставляется с читаемой документацией в комментариях и дополнительных ссылках. Некоторые настройки, которые приходят мне на ум:
Струны
- СтрокиДокументы em> — по умолчанию строки в PHP являются двоичными. Пока вы используете их с функциями binary safe, вы получаете то, что ожидаете. Начиная с PHP 5.2.1 вы можете приводить строки явно в двоичные строки. Это для прямой совместимости указанной поддержки юникода PHP 6:
$binary = (binary) $string; или $binary = b"binary string";.
mb_internal_encoding()Документы em> — получить или установить; mbstring.internal_encodingINIсуп>а>. Внутренняя кодировка — это имя кодировки символов, используемое для преобразования кодировки символов ввода HTTP, преобразования кодировки символов вывода HTTP и кодировки символов по умолчанию для строковых функций, определенных модулем mbstring.
iconv_set_encoding()Документы — Сопоставимо с расширением iconv. См. также настройки конфигурации iconv.
- Разное. Некоторые функции, работающие с последовательностями символов, позволяют указать кодировку набора символов. Например,
htmlspecialcharsДокументы. Используйте эти параметры и проверьте в документации их значения по умолчанию. Часто это ISO-8859-1, но вы ищете UTF-8. Другие функции, такие как html_entity_decodeДокументы. используют UTF-8 по умолчанию. Некоторые, такие как htmlspecialchars_decode, вообще не указывают кодировку, поэтому необходимо прочитать исходный код PHP для конкретное конкретное понимание того, как функция работает с (двоичной) строкой.
Чтобы ответить на ваш вопрос: Необходимость настроек и параметров всегда зависит от используемых вами компонентов. Для общих, таких как браузер или веб-сервер, можно указать рекомендуемые настройки, чтобы настроить его для UTF-8. А вот со всем остальным зависит. Самое главное найти его и убедиться, что вы знаете кодировку и можете настроить/указать ее. Часто это задокументировано. Пока вам не нужно иметь дело с переносимым кодом, это намного проще, поскольку вы контролируете среду или вам нужно иметь дело только с определенной средой. Пишите код с осторожностью, помня о кодировании, и все будет в порядке.
person
hakre
schedule
08.08.2011