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


Posted in PHP onJanuary 22, 2020

本文实例讲述了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 相关文章推荐
3种平台下安装php4经验点滴
Oct 09 PHP
经典的PHPer为什么被认为是草根?
Apr 02 PHP
163的邮件用phpmailer发送(实例详解)
Jun 24 PHP
php 批量生成html,txt文件的实现代码
Jun 26 PHP
PHP集成百度Ueditor 1.4.3
Nov 23 PHP
PHP在线书签系统分享
Jan 04 PHP
PHP载入图像imagecreatefrom_gif_jpeg_png系列函数用法分析
Nov 14 PHP
彻底搞懂PHP 变量结构体
Oct 11 PHP
PHP实现求解最长公共子串问题的方法
Nov 17 PHP
关于php支持的协议与封装协议总结(推荐)
Nov 17 PHP
微信公众平台开发教程④ ThinkPHP框架下微信支付功能图文详解
Apr 10 PHP
Laravel项目中timeAgo字段语言转换的改善方法示例
Sep 16 PHP
php经典趣味算法实例代码
Jan 21 #PHP
php利用ZipArchive类操作文件的实例
Jan 21 #PHP
Laravel 手动开关 Eloquent 修改器的操作方法
Dec 30 #PHP
Laravel 集成微信用户登录和绑定的实现
Dec 27 #PHP
PHP单元测试配置与使用方法详解
Dec 27 #PHP
PHP全局使用Laravel辅助函数dd
Dec 26 #PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
Dec 25 #PHP
You might like
php自定义函数call_user_func和call_user_func_array详解
2011/07/14 PHP
PHP框架性能测试报告
2016/05/08 PHP
Yii2.0 Basic代码中路由链接被转义的处理方法
2016/09/21 PHP
YII2框架中添加自定义模块的方法实例分析
2020/03/18 PHP
js查错流程归纳
2012/05/04 Javascript
JS中引用百度地图并将百度地图的logo和信息去掉
2013/09/29 Javascript
使用js的replace()方法查找字符示例代码
2013/10/28 Javascript
javascript圆盘抽奖程序实现原理和完整代码例子
2014/06/03 Javascript
js实现iPhone界面风格的单选框和复选框按钮实例
2015/08/18 Javascript
js将table的每个td的内容自动赋值给其title属性的方法
2016/10/13 Javascript
jQuery实现获取h1-h6标题元素值的方法
2017/03/06 Javascript
JavaScript实现提交模式窗口后刷新父窗口数据的方法
2017/06/16 Javascript
BootstrapTable加载按钮功能实例代码详解
2017/09/22 Javascript
基于vue-cli配置lib-flexible + rem实现移动端自适应
2017/12/26 Javascript
vue iView 上传组件之手动上传功能
2018/03/16 Javascript
JavaScript 正则命名分组【推荐】
2018/06/07 Javascript
浅谈vue项目利用Hbuilder打包成APP流程,以及遇到的坑
2020/09/12 Javascript
python实现随机梯度下降(SGD)
2020/03/24 Python
python使用Apriori算法进行关联性解析
2017/12/21 Python
matplotlib给子图添加图例的方法
2018/08/03 Python
python日期相关操作实例小结
2019/06/24 Python
CSS3+Sprite实现僵尸行走动画特效源码
2016/01/27 HTML / CSS
Html5+CSS3+EL表达式问题小结
2020/12/19 HTML / CSS
德国百年厨具品牌WMF美国站:WMF美国
2016/09/12 全球购物
美国一家主打母婴用品的团购网站:zulily
2017/09/19 全球购物
美国高级工作服品牌:Carhartt
2018/01/25 全球购物
Pretty Little Thing美国:时尚女性服饰
2018/08/27 全球购物
eDreams葡萄牙:全球最大的在线旅行社之一
2019/04/15 全球购物
幼师自我鉴定范文
2013/10/01 职场文书
学生实习推荐信范文
2013/11/26 职场文书
煤矿安全承诺书
2014/05/22 职场文书
2015年世界无烟日演讲稿
2015/03/18 职场文书
2015年银行大堂经理工作总结
2015/04/24 职场文书
2015年语文教学工作总结
2015/05/25 职场文书
如何让2019年上半年的工作总结更出色!
2019/07/01 职场文书
本地搭建minio文件服务器(使用bat脚本启动)的方法
2022/07/15 Servers