在PHP中如何检测文件编码?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (118)

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

我的代码基本上是:

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

目前,在UTF8文件的开头,它将在输出中添加这些字符: 

提问于
用户回答回答于

为了确保输出是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!
用户回答回答于

扫码关注云+社区

领取腾讯云代金券