UTF16等编码转UTF8

在导入淘宝助手生成的csv文件的时候,遇到了非常难以处理的编码问题,尝试iconv和mb_convert_encoding的各种方法无法处理。

google到下面的解决方案,记录在此。

附淘宝助手生成csv博客 : http://laolee.org/php生成淘宝助理可以导入的csv文件.htm

附转码博文连接 : http://www.wenlingnet.com/index.php/125/

function fopen_utf8($filename){
    $encoding='';
    $handle = fopen($filename, 'r');
    $bom = fread($handle, 2);
    //fclose($handle);
    rewind($handle);

    if($bom === chr(0xff).chr(0xfe)  || $bom === chr(0xfe).chr(0xff)){
        // UTF16 Byte Order Mark present
        $encoding = 'UTF-16';
    } else {
        $file_sample = fread($handle, 1000) + 'e'; //read first 1000 bytes
        // + e is a workaround for mb_string bug
        rewind($handle);

        $encoding = mb_detect_encoding($file_sample , 'UTF-8, UTF-7, ASCII, EUC-JP,SJIS, eucJP-win, SJIS-win, JIS, ISO-2022-JP');
    }
    if ($encoding){
        stream_filter_append($handle, 'convert.iconv.'.$encoding.'/UTF-8');
    }
    return ($handle);
}
Comments
Write a Comment