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 Token(令牌)设计
Mar 15 PHP
利用php获取服务器时间的实现代码
Jun 07 PHP
php 模拟POST提交的2种方法详解
Jun 17 PHP
php导入导出excel实例
Oct 25 PHP
PHP中shuffle数组值随便排序函数用法
Nov 21 PHP
PHP中SimpleXML函数用法分析
Nov 26 PHP
php计算函数执行时间的方法
Mar 20 PHP
浅析PHP关键词替换的类(避免重复替换,保留与还原原始链接)
Sep 22 PHP
PHP实现长文章分页实例代码(附源码)
Feb 03 PHP
详解php魔术方法(Magic methods)的使用方法
Feb 14 PHP
Ajax提交表单时验证码自动验证 php后端验证码检测
Jul 20 PHP
Thinkphp5.0框架视图view的循环标签用法示例
Oct 12 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获取linux命令结果的实例
2017/03/13 PHP
PHP开发的微信现金红包功能示例
2017/06/29 PHP
Thinkphp5.0框架使用模型Model的获取器、修改器、软删除数据操作示例
2019/10/11 PHP
Javascript 的addEventListener()及attachEvent()区别分析
2009/05/21 Javascript
简略的前端架构心得&&基于editor为例子的编码小技巧
2010/11/25 Javascript
表单的焦点顺序tabindex和对应enter键提交
2013/01/04 Javascript
jquery.post用法示例代码
2014/01/03 Javascript
浅析JavaScript事件和方法
2015/02/28 Javascript
JavaScript中的依赖注入详解
2015/03/18 Javascript
javascript实现随时变化着的背景颜色
2015/04/02 Javascript
jQuery插件multiScroll实现全屏鼠标滚动切换页面特效
2015/04/12 Javascript
AngularJS基础 ng-model 指令详解及示例代码
2016/08/02 Javascript
轻松实现js弹框显示选项
2016/09/13 Javascript
基于jQuery实现歌词滚动版音乐播放器的代码
2016/09/17 Javascript
微信小程序 swiper组件详解及实例代码
2016/10/25 Javascript
微信小程序  action-sheet详解及实例代码
2016/11/09 Javascript
JS实现自动阅读单词(有道单词本添加功能)
2016/11/14 Javascript
JavaScript定义函数的三种实现方法
2017/09/23 Javascript
jQuery 实现左右两侧菜单添加、移除功能
2018/01/02 jQuery
trackingjs+websocket+百度人脸识别API实现人脸签到
2018/11/26 Javascript
express express-session的使用小结
2018/12/12 Javascript
小程序的上传文件接口的注意要点解析
2019/09/17 Javascript
vue实现移动端省市区选择
2019/09/27 Javascript
extjs4图表绘制之折线图实现方法分析
2020/03/06 Javascript
Python中使用Boolean操作符做真值测试实例
2015/01/30 Python
使用Python脚本将绝对url替换为相对url的教程
2015/04/24 Python
requests和lxml实现爬虫的方法
2017/06/11 Python
Python基于动态规划算法解决01背包问题实例
2017/12/06 Python
Python求解任意闭区间的所有素数
2018/06/10 Python
详解Python3.6的py文件打包生成exe
2018/07/13 Python
浅谈Python小波分析库Pywavelets的一点使用心得
2019/07/09 Python
详解Html5页面实现下载文件(apk、txt等)的三种方式
2018/10/22 HTML / CSS
党校培训自我鉴定范文
2014/04/10 职场文书
离婚协议书范本及离婚须知
2014/10/15 职场文书
离职报告范文
2014/11/04 职场文书
平凡的世界读书笔记
2015/06/25 职场文书