PHP 5.3 中用 mb_detect_encoding 检测字符串是否为 UTF-8 的问题


作者: 我不是鱼 (2016-05-14 21:14) 分类: PHP   标签: PHP 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)


添加评论

昵称:


验证码