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 相关文章推荐
PHP 和 XML: 使用expat函数(一)
Oct 09 PHP
PHP如何解决网站大流量与高并发的问题
Jun 25 PHP
php中批量修改文件后缀名的函数代码
Oct 23 PHP
PHP中mb_convert_encoding与iconv函数的深入解析
Jun 21 PHP
微信扫描二维码登录网站代码示例
Dec 30 PHP
修改WordPress中文章编辑器的样式的方法详解
Dec 15 PHP
PHP版本常用的排序算法汇总
Dec 20 PHP
php判断邮箱地址是否存在的方法
Feb 13 PHP
简单介绍PHP非阻塞模式
Mar 03 PHP
深入理解php printf() 输出格式化的字符串
May 23 PHP
ThinkPHP框架表单验证操作方法
Jul 19 PHP
PHP递归统计系统中代码行数
Sep 19 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遍历二维数组的代码
2011/04/22 PHP
PHP fopen()和 file_get_contents()应用与差异介绍
2014/03/19 PHP
php字符串替换函数substr_replace()用法实例
2015/03/17 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
PHP使用SMTP邮件服务器发送邮件示例
2018/08/28 PHP
微信推送功能实现方式图文详解
2019/07/12 PHP
javascript web对话框与弹出窗口
2009/02/22 Javascript
Extjs学习笔记之六 面版
2010/01/08 Javascript
JavaScript CSS修改学习第二章 样式
2010/02/19 Javascript
实例讲解JS中数组Array的操作方法
2014/05/09 Javascript
js实现按一下删除键删除整个单词附demo
2014/09/05 Javascript
javascript常用功能汇总
2015/07/05 Javascript
实例解析jQuery中如何取消后续执行内容
2016/12/01 Javascript
jQuery源码解读之extend()与工具方法、实例方法详解
2017/03/30 jQuery
基于BootStrap的前端分页带省略号和上下页效果
2017/05/18 Javascript
AngularJS ionic手势事件的使用总结
2017/08/09 Javascript
微信小程序网络请求封装示例
2018/07/24 Javascript
JavaScript函数的4种调用方法实例分析
2019/03/05 Javascript
小程序实现图片移动缩放效果
2020/05/26 Javascript
Paypal支付不完全指北
2020/06/04 Javascript
Python面向对象编程中的类和对象学习教程
2015/03/30 Python
python psutil库安装教程
2018/03/19 Python
pandas 小数位数 精度的处理方法
2018/06/09 Python
使用python采集脚本之家电子书资源并自动下载到本地的实例脚本
2018/10/23 Python
Python实现针对json中某个关键字段进行排序操作示例
2018/12/25 Python
根据tensor的名字获取变量的值方式
2020/01/04 Python
Python类和实例的属性机制原理详解
2020/03/21 Python
Python基于unittest实现测试用例执行
2020/11/25 Python
澳大利亚在线划船、露营和钓鱼商店:BCF Australia
2020/03/22 全球购物
介绍一下grep命令的使用
2015/06/12 面试题
工作求职信
2014/07/04 职场文书
党的群众路线教育实践活动领导班子整改措施
2014/10/28 职场文书
2015年教务工作总结
2015/05/23 职场文书
文明和谐家庭事迹材料(2016精选版)
2016/02/29 职场文书
2019下半年英语教师的教学工作计划(3篇)
2019/09/25 职场文书
Mybatis是这样防止sql注入的
2021/12/06 Java/Android