mbstring PHP 模块有一个strict_detection
设置,记录在这里。不幸的是,该手册完全没用;它只是说这个选项“启用严格的编码检测”。
我做了一些测试,找不到任何 mbstring 函数受此影响。mb_check_encoding()
并对mb_detect_encoding()
有效和无效的 UTF-8 输入给出完全相同的结果。
(编辑:)该mbstring.strict_detection
选项是在 PHP 5.1.2 中添加的。
mbstring PHP 模块有一个strict_detection
设置,记录在这里。不幸的是,该手册完全没用;它只是说这个选项“启用严格的编码检测”。
我做了一些测试,找不到任何 mbstring 函数受此影响。mb_check_encoding()
并对mb_detect_encoding()
有效和无效的 UTF-8 输入给出完全相同的结果。
(编辑:)该mbstring.strict_detection
选项是在 PHP 5.1.2 中添加的。
如果没有设置strict参数,编码检测会更快,但不会那么准确。例如,如果您有一个带有部分 UTF-8 序列的 UTF-8 字符串,如下所示:
$s = "H\xC3\xA9ll\xC3";
$encoding = mb_detect_encoding($s, mb_detect_order(), false);
调用的结果mb_detect_encoding
仍然是“UTF-8”,即使它不是有效的 UTF-8(最后一个字符不完整)。
但是如果你将strict参数设置为 true...
$s = "H\xC3\xA9ll\xC3";
$encoding = mb_detect_encoding($s, mb_detect_order(), true);
它将执行更彻底的检查,并且该调用的结果将是 FALSE。