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到页面的3种方法详解
Jun 06 PHP
php ci框架中加载css和js文件失败的原因及解决方法
Jul 29 PHP
深入分析PHP引用(&)
Sep 04 PHP
VPS中使用LNMP安装WordPress教程
Dec 28 PHP
php中文繁体和简体相互转换的方法
Mar 21 PHP
Yii扩展组件编写方法实例分析
Jun 29 PHP
详解Window7 下开发php扩展
Dec 31 PHP
PHP7 新特性详细介绍
Sep 06 PHP
php一个文件搞定微信jssdk配置
Dec 12 PHP
PHP+jQuery实现滚屏无刷新动态加载数据功能详解
May 04 PHP
PHP编程实现微信企业向用户付款的方法示例
Jul 26 PHP
原生JS实现Ajax通过POST方式与PHP进行交互的方法示例
May 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
封装ThinkPHP的一个文件上传方法实例
2014/10/31 PHP
PHP的PDO预定义常量讲解
2019/01/24 PHP
PHP多进程通信-消息队列使用
2019/03/08 PHP
dojo学习第一天 Tab选项卡 实现
2011/08/28 Javascript
获取非最后一列td值并将title设为该值的方法
2013/10/30 Javascript
关于cookie的初识和运用(js和jq)
2016/04/07 Javascript
Bootstrap CSS组件之大屏幕展播
2016/12/17 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(下)
2017/04/21 Javascript
详解Angular路由 ng-route和ui-router的区别
2017/05/22 Javascript
nodejs 图解express+supervisor+ejs的用法(推荐)
2017/09/08 NodeJs
关于TypeScript模块导入的那些事
2018/06/12 Javascript
解决VUE中document.body.scrollTop为0的问题
2018/09/15 Javascript
KOA+egg.js集成kafka消息队列的示例
2018/11/09 Javascript
利用jsonp解决js读取本地json跨域的问题
2018/12/11 Javascript
element-ui table span-method(行合并)的实现代码
2018/12/20 Javascript
使用element-ui table expand展开行实现手风琴效果
2019/03/15 Javascript
解决vue.js提交数组时出现数组下标的问题
2019/11/05 Javascript
[02:37]TI8勇士令状不朽珍藏II视频展示
2018/06/23 DOTA
python调用其他文件函数或类的示例
2019/07/16 Python
Python实现一个带权无回置随机抽选函数的方法
2019/07/24 Python
python Django框架实现web端分页呈现数据
2019/10/31 Python
Python+opencv+pyaudio实现带声音屏幕录制
2019/12/23 Python
keras实现多种分类网络的方式
2020/06/11 Python
python爬虫快速响应服务器的做法
2020/11/24 Python
基于Html5实现的react拖拽排序组件示例
2018/08/13 HTML / CSS
新加坡最受追捧的体验平台:Hapz
2018/01/01 全球购物
经济信息管理专业大学生求职信
2013/09/27 职场文书
好的自荐信包括什么内容
2013/11/07 职场文书
挖掘机司机岗位职责
2014/02/12 职场文书
大学共青团员个人自我评价
2014/04/16 职场文书
8和9的加减法教学反思
2014/05/01 职场文书
保安公司服务承诺书
2014/05/28 职场文书
租房协议书范例
2014/10/14 职场文书
2014年社区党建工作总结
2014/11/11 职场文书
2016年中学植树节活动总结
2016/03/16 职场文书
六个好看实用的 HTML + CSS 后台登录入口页面
2022/04/28 HTML / CSS