• 技术文章 >后端开发 >PHP问题

    怎么解决php读取文件乱码问题

    藏色散人藏色散人2020-11-20 09:51:10原创45

    php读取文件乱码的解决办法:首先打开相应的代码文件;然后通过“iconv($encodType, "utf-8", $content); ”方法解决中文乱码即可。

    推荐:《PHP视频教程

    PHP读取文件,解决中文乱码UTF-8

    $opts = array(  
    'file' => array(  
            'encoding' => "utf-8"  
      )  
    );  
    $opts = array('http' => array('encoding' => 'utf-8'));  
    $ctxt = stream_context_create($opts);  
    $content = file_get_contents($filePath, FILE_TEXT, $ctxt);

    最简单的就是将GF2312→UTF-8

    $str=iconv("gb2312", "utf-8", $str);

    不管用的

    $content
     = mb_convert_encoding(
    $content
    , 
    "UTF-8"
    , 
    "auto"
    );

    ******************************************丑陋的分割线来告诉大家上面的不好的:下面的才是正确的方法···哈哈···**********************************************************

    define('UTF32_BIG_ENDIAN_BOM', chr(0x00) . chr(0x00) . chr(0xFE) . chr(0xFF));  
    define('UTF32_LITTLE_ENDIAN_BOM', chr(0xFF) . chr(0xFE) . chr(0x00) . chr(0x00));  
    define('UTF16_BIG_ENDIAN_BOM', chr(0xFE) . chr(0xFF));  
    define('UTF16_LITTLE_ENDIAN_BOM', chr(0xFF) . chr(0xFE));  
    define('UTF8_BOM', chr(0xEF) . chr(0xBB) . chr(0xBF));  
      
    $text = file_get_contents($newPath);  
    $first2 = substr($text, 0, 2);  
    $first3 = substr($text, 0, 3);  
    $first4 = substr($text, 0, 3);  
    $encodType = "";  
    if ($first3 == UTF8_BOM)  
        $encodType = 'UTF-8 BOM';  
    else if ($first4 == UTF32_BIG_ENDIAN_BOM)  
        $encodType = 'UTF-32BE';  
    else if ($first4 == UTF32_LITTLE_ENDIAN_BOM)  
        $encodType = 'UTF-32LE';  
    else if ($first2 == UTF16_BIG_ENDIAN_BOM)  
        $encodType = 'UTF-16BE';  
    else if ($first2 == UTF16_LITTLE_ENDIAN_BOM)  
        $encodType = 'UTF-16LE';  
      
    $content = file_get_contents($newPath);  
      
    $content = iconv($encodType, "utf-8", $content);

    终极版·····

    $text = file_get_contents($filePath);  
                            //$encodType = mb_detect_encoding($text);  
                            define('UTF32_BIG_ENDIAN_BOM', chr(0x00) . chr(0x00) . chr(0xFE) . chr(0xFF));  
                            define('UTF32_LITTLE_ENDIAN_BOM', chr(0xFF) . chr(0xFE) . chr(0x00) . chr(0x00));  
                            define('UTF16_BIG_ENDIAN_BOM', chr(0xFE) . chr(0xFF));  
                            define('UTF16_LITTLE_ENDIAN_BOM', chr(0xFF) . chr(0xFE));  
                            define('UTF8_BOM', chr(0xEF) . chr(0xBB) . chr(0xBF));  
                            $first2 = substr($text, 0, 2);  
                            $first3 = substr($text, 0, 3);  
                            $first4 = substr($text, 0, 3);  
                            $encodType = "";  
                            if ($first3 == UTF8_BOM)  
                                $encodType = 'UTF-8 BOM';  
                            else if ($first4 == UTF32_BIG_ENDIAN_BOM)  
                                $encodType = 'UTF-32BE';  
                            else if ($first4 == UTF32_LITTLE_ENDIAN_BOM)  
                                $encodType = 'UTF-32LE';  
                            else if ($first2 == UTF16_BIG_ENDIAN_BOM)  
                                $encodType = 'UTF-16BE';  
                            else if ($first2 == UTF16_LITTLE_ENDIAN_BOM)  
                                $encodType = 'UTF-16LE';  
      
                            //下面的判断主要还是判断ANSI编码的·  
                            if ($encodType == '') {//即默认创建的txt文本-ANSI编码的  
                                $content = iconv("GBK", "UTF-8", $text);  
                            } else if ($encodType == 'UTF-8 BOM') {//本来就是UTF-8不用转换  
                                $content = $text;  
                            } else {//其他的格式都转化为UTF-8就可以了  
                                $content = iconv($encodType, "UTF-8", $text);  
                            }

    以上的终极版·可以适应中文操作windows系统建立的ANSI""""``UTF-8"""Unicode"``的txt文本····

    以上就是怎么解决php读取文件乱码问题的详细内容,更多请关注php中文网其它相关文章!

    本文原创发布php中文网,转载请注明出处,感谢您的尊重!
    专题推荐:php 乱码
    上一篇:iis 如何隐藏index.php 下一篇:php session 取不到值怎么办
    第14期线上培训班

    相关文章推荐

    • 如何解决mssql php乱码问题• 如何解决php插入数据乱码问题• 如何解决php加密 乱码问题• 如何解决php get 参数乱码问题

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网