我有一个脚本,它将多个文件合并为一个,当其中一个文件具有UTF8编码时,它会中断.我认为我应该utf8_decode()在读取文件时使用该函数,但我不知道如何判断哪个需要解码.
我的代码基本上是:
$output = '';
foreach ($files as $filename) {
$output .= file_get_contents($filename) . "\n";
}
file_put_contents('combined.txt', $output);
Run Code Online (Sandbox Code Playgroud)
目前,在UTF8文件的开头,它在输出中添加了这些字符: 
我在另一个答案中找到了一个有用的功能,我想知道是否有人可以向我解释它在做什么以及它是否可靠.我正在使用mb_detect_encoding()但是在从Linux操作系统上的ISO8859-1文件中读取时它已被删除.
这个功能似乎适用于我测试过的所有情况.
这是一个问题:获取文件编码
这是功能:
function isUTF8($string){
return preg_match('%(?:
[\xC2-\xDF][\x80-\xBF] # Non-overlong 2-byte
|\xE0[\xA0-\xBF][\x80-\xBF] # Excluding overlongs
|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # Straight 3-byte
|\xED[\x80-\x9F][\x80-\xBF] # Excluding surrogates
|\xF0[\x90-\xBF][\x80-\xBF]{2} # Planes 1-3
|[\xF1-\xF3][\x80-\xBF]{3} # Planes 4-15
|\xF4[\x80-\x8F][\x80-\xBF]{2} # Plane 16
)+%xs', $string);
}
Run Code Online (Sandbox Code Playgroud)
这是检测UTF8字符串的可靠方法吗?到底是做什么的?它可以变得更强大吗?