PHP识别文件编码有多种方式,例如可以用mb_detect_encoding函数。
以下是识别文件是否是GBK或者UTF8的函数,通常情况下,如果isGBK返回true,那么isUTF8肯定是返回false。
function isGBK($str) { if(mb_detect_encoding($str, 'GBK', true)===false){ return false; } return true; } function isUTF8($str) { if(mb_detect_encoding($str, 'UTF-8', true)===false){ return false; } return true; }
但也有例外,例如一个文件的格式是UTF-8,但文件内容里都是英文或数字,没有出现汉字的情况,这时候,这两个函数都会返回true。
针对这种情况,为了达到识别效果,可以通过在字符串后面加入一个中文全角空格,这样就可以准确判断了。
if(isGBK($str) && isUTF8($str)){ $str.=" "; }