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提取字符串中的图片地址[正则表达式]
Nov 12 PHP
PHP提示Notice: Undefined variable的解决办法
Nov 24 PHP
限制ckeditor上传图片文件大小的方法
Nov 15 PHP
php jquery 多文件上传简单实例
Dec 23 PHP
php获取表单中多个同名input元素的值
Mar 20 PHP
一个PHP的ZIP压缩类分享
May 04 PHP
PHP入门之常量简介和系统常量
May 12 PHP
浅析ThinkPHP中execute和query方法的区别
Jun 13 PHP
Yii调试SQL的常用方法
Jul 09 PHP
Laravel使用支付宝进行支付的示例代码
Aug 16 PHP
laravel 解决多库下的DB::transaction()事务失效问题
Oct 21 PHP
php设计模式之享元模式分析【星际争霸游戏案例】
Mar 23 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下通过系统信号量加锁方式获取递增序列ID
2009/09/25 PHP
PHP两种快速排序算法实例
2015/02/15 PHP
分享五个PHP7性能优化提升技巧
2015/12/07 PHP
PHP7标量类型declare用法实例分析
2016/09/26 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
2019/04/16 PHP
JQuery上传插件Uploadify使用详解及错误处理
2010/04/27 Javascript
JavaScript中数组的排序、乱序和搜索实现代码
2011/11/30 Javascript
jQuery怎么解析Json字符串(Json格式/Json对象)
2013/08/09 Javascript
JavaScript 事件入门知识
2015/04/13 Javascript
js实现类似MSN提示的页面效果代码分享
2015/08/24 Javascript
JavaScript实现的Tween算法及缓冲特效实例代码
2015/11/03 Javascript
AngularJS下对数组的对比分析
2016/08/24 Javascript
轻松掌握JavaScript中介者模式
2016/08/26 Javascript
原生JS版和jquery版实现checkbox的全选/全不选/点选/行内点选(Mr.Think)
2016/10/29 Javascript
js放到head中失效的原因与解决方法
2017/03/07 Javascript
浅谈用Webpack路径压缩图片上传尺寸获取的问题
2018/02/22 Javascript
解决Antd Table表头加Icon和气泡提示的坑
2020/11/17 Javascript
[55:35]VGJ.S vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
wxPython中文教程入门实例
2014/06/09 Python
python基础教程之五种数据类型详解
2017/01/12 Python
Python实现七彩蟒蛇绘制实例代码
2018/01/16 Python
Python 最大概率法进行汉语切分的方法
2018/12/14 Python
详解pyinstaller selenium python3 chrome打包问题
2019/10/18 Python
Python使用Pandas库常见操作详解
2020/01/16 Python
Python中的 ansible 动态Inventory 脚本
2020/01/19 Python
Python 实现二叉查找树的示例代码
2020/12/21 Python
纯CSS3实现带动画效果导航菜单无需js
2013/09/27 HTML / CSS
大学生个人总结的自我评价
2013/10/05 职场文书
化工专业推荐信范文
2013/11/28 职场文书
营销人才自我鉴定范文
2013/12/25 职场文书
工作表现评语
2014/01/19 职场文书
教师师德演讲稿
2014/05/06 职场文书
司机工作自我鉴定
2014/09/19 职场文书
办护照工作证明
2014/10/01 职场文书
小学二年级数学教学计划
2015/01/20 职场文书
巴黎圣母院观后感
2015/06/10 职场文书