6

mbstring PHP 模块有一个strict_detection设置,记录在这里。不幸的是,该手册完全没用;它只是说这个选项“启用严格的编码检测”

我做了一些测试,找不到任何 mbstring 函数受此影响。mb_check_encoding()并对mb_detect_encoding()有效和无效的 UTF-8 输入给出完全相同的结果。

(编辑:)该mbstring.strict_detection选项是在 PHP 5.1.2 中添加的。

4

1 回答 1

6

如果没有设置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。

于 2013-07-30T22:36:08.740 回答