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 相关文章推荐
apache+mysql+php+ssl服务器之完全安装攻略
Sep 05 PHP
聊天室php&mysql(二)
Oct 09 PHP
php中的一个中文字符串截取函数
Feb 14 PHP
php 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
Nov 14 PHP
JoshChen_php新手进阶高手不可或缺的规范介绍
Aug 16 PHP
CI框架中集成CKEditor编辑器的教程
Jun 09 PHP
PHP与MYSQL中UTF8 中文排序示例代码
Oct 23 PHP
php截取指定2个字符之间字符串的方法
Apr 15 PHP
php处理静态页面:页面设置缓存时间实例
Jun 22 PHP
php使用lua+redis实现限流,计数器模式,令牌桶模式
Apr 04 PHP
php设计模式之职责链模式定义与用法经典示例
Sep 19 PHP
PHP Web表单生成器案例分析
Jun 02 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数组对百万数据进行排除重复数据的实现代码
2010/06/08 PHP
php过滤所有恶意字符(批量过滤post,get敏感数据)
2014/03/18 PHP
php准确获取文件MIME类型的方法
2015/06/17 PHP
yii2多图上传组件的使用教程
2018/05/10 PHP
Javascript的匿名函数小结
2009/12/31 Javascript
文本框只能选择数据到文本框禁止手动输入
2013/11/22 Javascript
详解javascript跨浏览器事件处理程序
2016/03/27 Javascript
RequireJS使用注意细节
2016/05/15 Javascript
使用RequireJS库加载JavaScript模块的实例教程
2016/06/06 Javascript
JS/jQ实现免费获取手机验证码倒计时效果
2016/06/13 Javascript
js控制按钮,防止频繁点击响应的实例
2017/02/15 Javascript
JavaScript实现二分查找实例代码
2017/02/22 Javascript
jQuery实现元素的插入
2017/02/27 Javascript
Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器
2017/04/19 Javascript
又拍云 Node.js 实现文件上传、删除功能
2018/10/28 Javascript
微信小程序 云开发模糊查询实现解析
2019/09/02 Javascript
微信小程序关键字变色实现代码实例
2019/12/13 Javascript
JS实现躲避粒子小游戏
2020/06/18 Javascript
[01:56]2014DOTA2西雅图邀请赛 MVP外卡赛老队长精辟点评
2014/07/09 DOTA
[01:08:33]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python中hashlib模块用法示例
2017/10/30 Python
同时安装Python2 & Python3 cmd下版本自由选择的方法
2017/12/09 Python
pandas 读取各种格式文件的方法
2018/06/22 Python
Python3.6使用tesseract-ocr的正确方法
2018/10/17 Python
python3实现指定目录下文件sha256及文件大小统计
2019/02/25 Python
Python Flask 搭建微信小程序后台详解
2019/05/06 Python
浅谈keras的深度模型训练过程及结果记录方式
2020/01/24 Python
django处理select下拉表单实例(从model到前端到post到form)
2020/03/13 Python
Python+pyftpdlib实现局域网文件互传
2020/08/24 Python
CSS3 calc()会计算属性详解
2018/02/27 HTML / CSS
使用HTML5里的classList操作CSS类
2016/06/28 HTML / CSS
详解HTML5 data-* 自定义属性
2018/01/24 HTML / CSS
预订全球最佳旅行体验:Viator
2018/03/30 全球购物
简述进程的启动、终止的方式以及如何进行进程的查看
2014/02/20 面试题
无犯罪记录证明范本
2014/09/15 职场文书
2016教师六五普法学习心得体会
2016/01/21 职场文书