我需要设置ini_set('default_charset','UTF-8');?

时间:2011-11-22 15:55:38

标签: php unicode

我的每个页面的框架如下:

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

4 个答案:

答案 0 :(得分:8)

不,你没必要。

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

为每个页面设置

答案 1 :(得分:5)

当谈到http-header时,你可以解释其他答案。

但是:有些函数是默认的charset意识

来自FILTER_SANITIZE_FULL_SPECIAL_CHARS的描述:

  

与htmlspecialchars一样,此过滤器知道default_charset以及序列的   检测到的字节构成当前的无效字符   字符集然后整个字符串被拒绝导致a   0长度的字符串。

答案 2 :(得分:5)

请参阅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>";
}

答案 3 :(得分:3)

default_charset ini设置应该适合你。 PHP始终使用此设置

在Content-type:标头中默认输出字符编码