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实现文件上传二法
Oct 09 PHP
PHP基础学习之流程控制的实现分析
Apr 28 PHP
PHP获取当前日期所在星期(月份)的开始日期与结束日期(实现代码)
Jun 18 PHP
关于url地址传参数时字符串有回车造成页面脚本赋值失败的解决方法
Jun 28 PHP
php 验证码(倾斜,正弦干扰线,黏贴,旋转)
Jun 29 PHP
php共享内存段示例分享
Jan 20 PHP
php轻松实现中英文混排字符串截取
May 28 PHP
PHP封装分页函数实现文本分页和数字分页
Oct 23 PHP
Json_encode防止汉字转义成unicode的方法
Feb 25 PHP
PHP使用mysql与mysqli连接Mysql数据库用法示例
Jul 07 PHP
Yii框架实现的验证码、登录及退出功能示例
May 20 PHP
thinkphp诸多限制条件下如何getshell详解
Dec 09 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 验证码制作(网树注释思想)
2009/07/20 PHP
PHP 删除一个目录及目录下的所有文件的函数代码
2010/05/26 PHP
PHP 之Section与Cookie使用总结
2012/09/14 PHP
ThinkPHP3.1基础知识快速入门
2014/06/19 PHP
ThinkPHP实现支付宝接口功能实例
2014/12/02 PHP
php函数重载的替代方法--伪重载详解
2015/05/08 PHP
php获取错误信息的方法
2015/07/17 PHP
20个最新的jQuery插件
2012/01/13 Javascript
JS刷新框架外页面七种实现代码
2013/02/18 Javascript
Extjs单独定义各组件的实例代码
2013/06/25 Javascript
深入理解JavaScript函数参数(推荐)
2016/07/26 Javascript
浅谈JavaScript中promise的使用
2017/01/11 Javascript
Angular指令封装jQuery日期时间插件datetimepicker实现双向绑定示例
2017/01/22 Javascript
javascript判断回文数详解及实现代码
2017/02/03 Javascript
关于 angularJS的一些用法
2017/11/29 Javascript
vue路由跳转传参数的方法
2019/05/06 Javascript
Echarts地图添加引导线效果(labelLine)
2019/09/30 Javascript
JS数组的高级使用方法示例小结
2020/03/14 Javascript
vue项目打包之开发环境和部署环境的实现
2020/04/23 Javascript
JavaScript 函数用法详解【函数定义、参数、绑定、作用域、闭包等】
2020/05/12 Javascript
Javascript前端下载后台传来的文件流代码实例
2020/08/18 Javascript
pygame实现非图片按钮效果
2019/10/29 Python
Python实现元素等待代码实例
2019/11/11 Python
基于python3的socket聊天编程
2020/02/17 Python
python 列表推导和生成器表达式的使用
2021/02/01 Python
CSS3 animation实现逐帧动画效果
2016/06/02 HTML / CSS
世界上最悠久的自行车制造商:Ribble Cycles
2017/03/18 全球购物
Office DEPOT法国官网:欧迪办公用品采购
2018/01/03 全球购物
Perfume’s Club意大利官网:欧洲美妆电商
2019/05/03 全球购物
存储过程和sql语句的优缺点
2014/07/02 面试题
酒店采购员岗位职责
2014/03/14 职场文书
团代会宣传工作方案
2014/05/08 职场文书
四风问题对照检查材料整改措施
2014/09/27 职场文书
董事长致辞
2015/07/29 职场文书
golang用type-switch判断interface的实际存储类型
2022/04/14 Golang
Java 多线程并发FutureTask
2022/06/28 Java/Android