检测 PHP 中的文件编码

2022-08-30 15:26:49

我有一个脚本,它将许多文件合并为一个,当其中一个文件具有UTF8编码时,它会中断。我认为在读取文件时应该使用该函数,但我不知道如何判断哪个需要解码。utf8_decode()

我的代码基本上是:

$output = '';
foreach ($files as $filename) {
    $output .= file_get_contents($filename) . "\n";
}
file_put_contents('combined.txt', $output);

目前,在 UTF8 文件的开头,它会在输出中添加以下字符:


答案 1

尝试使用mb_detect_encoding功能。此函数将检查您的字符串并尝试“猜测”其编码是什么。然后,您可以根据需要对其进行转换。但是,正如brulak所建议的那样,为了保留要传输的数据,您可能最好转换为UTF-8而不是中转换为UTF-8。


答案 2

为了确保输出是 UTF-8,无论它是哪种输入,我都使用这个检查

if(!mb_check_encoding($output, 'UTF-8')
    OR !($output === mb_convert_encoding(mb_convert_encoding($output, 'UTF-32', 'UTF-8' ), 'UTF-8', 'UTF-32'))) {

    $output = mb_convert_encoding($content, 'UTF-8', 'pass'); 
}

// $output is now safely converted to UTF-8!

推荐