Мои рамки для каждой страницы делают следующее:
ini_set('mbstring.internal_encoding','UTF-8'); ini_set('mbstring.func_overload',7); header('Content-Type: text/html; charset=UTF-8');
Нужно ли делать ini_set( 'default_charset', 'UTF-8' );
слишком?
Нет, вам не обязательно.
header('Content-Type: text/html; charset=UTF-8');
устанавливает это для каждой страницы уже
Когда дело доходит до http-заголовка, вы в порядке, как объясняют другие ответы.
Но: Есть некоторые функции, которые по умолчанию кодируются
Из описания FILTER_SANITIZE_FULL_SPECIAL_CHARS :
Подобно htmlspecialchars, этот фильтр знает о файле default_charset и, если обнаружена последовательность байтов, которая составляет недопустимый символ в текущем наборе символов, вся строка отклоняется, в результате получается строка длиной 0 строк.
См. https://bugs.php.net/bug.php?id=29983. Мне кажется, что некоторые дистрибутивы все еще имеют проблему
прецедент
echo "ini_get('default_charset') ". ini_get('default_charset')."<br>"; if (!ini_set('default_charset', 'utf-8')) { echo "could not set default_charset to utf-8<br>"; }
default_charset ini настройка должна работать для вас. PHP всегда выводит кодировку символов по умолчанию в заголовке Content-type:, используя этот параметр