Мне нужно установить ini_set ('default_charset', 'UTF-8');?

Мои рамки для каждой страницы выполняют следующие действия:

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' );?

Ответ 1

Нет, вам не обязательно.

header('Content-Type: text/html; charset=UTF-8');

устанавливает это для каждой страницы уже

Ответ 2

Когда дело доходит до http-заголовка, вы в порядке, как объясняют другие ответы.

Но: Есть некоторые функции, которые известны по умолчанию в кодировке

Из описания FILTER_SANITIZE_FULL_SPECIAL_CHARS:

Подобно htmlspecialchars, этот фильтр знает о умолчанию_charset и если последовательность байтов, который составляет недопустимый символ в текущем набор символов, тогда вся строка отклоняется, что приводит к Строка длиной 0.

Ответ 3

См. 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>";
}

Ответ 4

default_charset ini настройка должна работать для вас. PHP всегда выводит кодировку символов по умолчанию в заголовке Content-type:, используя этот параметр