【发布时间】:2012-01-04 00:10:57
【问题描述】:
我的每个页面的框架如下:
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('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');
已经为每个页面设置了这个
【讨论】:
请参阅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>";
}
【讨论】:
当涉及到 http-header 时,您可以按照其他答案的说明进行操作。
但是:有些函数是默认字符集感知的
来自FILTER_SANITIZE_FULL_SPECIAL_CHARS的描述:
像 htmlspecialchars 一样,这个过滤器知道 default_charset 并且如果一个序列 检测到构成当前无效字符的字节 字符集,然后整个字符串被拒绝,导致 0 长度字符串。
【讨论】:
default_charset ini 设置应该适合你。默认情况下,PHP 始终在 Content-type: 标头中使用此设置输出字符编码
【讨论】: