PHP 5.3 中用 mb_detect_encoding 检测字符串是否为 UTF-8 的问题
PHP 提供了 mb_detect_encoding 来检测字符串的编码。例如:
mb_detect_encoding('LNMP笔记', 'UTF-8', true);
将返回 UTF-8,如果不是UTF-8将返回false。不过这种判断并不是百分百的,例如 gbk 编码的 希腊 :
mb_detect_encoding(mb_convert_encoding('希腊', 'gbk', 'UTF-8'), 'UTF-8', true);
PHP 7 中返回 false
PHP 5.3 返回 UTF-8
貌似是PHP的bug,但在PHP7总已经修复。
在PHP 5.3可以用正则替代 mb_detect_encoding 检查字符串是否是 UTF-8:
preg_match('//u', mb_convert_encoding('希腊', 'gbk', 'UTF-8'));
在PHP 7 和 PHP 5.3 都是返回 false.
前一篇: FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream
后一篇: LNMP 环境下安装多个 PHP 版本(PHP7, PHP5)