我的框架,每个页面做后续:我是否需要设置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');
吗?
我的框架,每个页面做后续:我是否需要设置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');
吗?
不,你不需要。
header('Content-Type: text/html; charset=UTF-8');
设置此为每个页面已经
这并不能掩盖一切。正如@itpastorn和kzqai指出的那样,有些函数具有htmlentities(和其他),它们会查看default_charset。 –
DEFAULT_CHARSET INI设置应该为你工作。 PHP始终使用此设置在内容类型:标头中默认输出字符编码
当涉及到http头时,其他答案可以解释。
但是:有一些功能是默认字符集意识到
从FILTER_SANITIZE_FULL_SPECIAL_CHARS说明:
像用htmlspecialchars,该过滤器是意识到DEFAULT_CHARSET的,如果检测的 字节序列在当前的 字符集中构成无效字符,则整个字符串将被拒绝,从而导致产生0长度的字符串 。
与http://php.net/htmlentities相同,当然http://php.net/htmlspecialchars – Kzqai
请参阅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>";
}
这是......非常令人担忧。我用php 5.5运行ubuntu 14.04,但这仍然发生... – Kzqai
http://php.net/default_charset – hakre