PHP读取文件,解决中文乱码UTF-8的方法分析

吾爱主题 阅读:143 2021-09-28 11:10:00 评论:0

本文实例讲述了PHP读取文件,解决中文乱码UTF-8的方法。分享给大家供大家参考,具体如下:

?
1 2 3 4 5 6 7 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

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

不管用的

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

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

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 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 );

终极版·····

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 $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程序设计有所帮助。

原文链接:https://blog.csdn.net/luyaran/article/details/71079539

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容