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 相关文章推荐
实用函数8
Nov 08 PHP
PHP 检查扩展库或函数是否可用的代码
Apr 06 PHP
php 网页播放器用来播放在线视频的代码(自动判断并选择视频文件类型)
Jun 03 PHP
PHP批量采集下载美女图片的实现代码
Jun 03 PHP
php xml常用函数的集合(比较详细)
Jun 06 PHP
分享一段PHP制作的中文拼音首字母工具类
Dec 11 PHP
php绘制一个矩形的方法
Jan 24 PHP
php将数组转换成csv格式文件输出的方法
Mar 14 PHP
Symfony2框架学习笔记之HTTP Cache用法详解
Mar 18 PHP
PHP获取文本框、密码域、按钮的值实例代码
Apr 19 PHP
php实现的后台表格分页功能示例
Oct 23 PHP
php实现数组重复数字统计实例
Sep 30 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
在Windows系统上安装PHP运行环境文字教程
2010/07/19 PHP
PHP操作MongoDB时的整数问题及对策说明
2011/05/02 PHP
学习php设计模式 php实现命令模式(command)
2015/12/08 PHP
再次更新!MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类 Ver 1.6)
2007/02/05 Javascript
jquery select选中的一个小问题
2009/10/11 Javascript
javascript 面向对象全新理练之原型继承
2009/12/03 Javascript
用jquery实现学校的校历(asp.net+jquery ui 1.72)
2010/01/01 Javascript
Extjs学习笔记之三 extjs form更多的表单项
2010/01/07 Javascript
jQuery Autocomplete自动完成插件
2010/07/17 Javascript
利用jquery的获取JS文件中的字符串内容
2012/02/14 Javascript
jquery和css3实现的炫酷时尚的菜单导航
2014/09/01 Javascript
JavaScript中的small()方法使用详解
2015/06/08 Javascript
Bootstrap table使用方法总结
2017/05/10 Javascript
解决Vue 通过下表修改数组,页面不渲染的问题
2018/03/08 Javascript
详解webpack运行Babel教程
2018/06/13 Javascript
微信小程序实现原生步骤条
2019/07/25 Javascript
Python 错误和异常小结
2013/10/09 Python
Python 实现简单的电话本功能
2015/08/09 Python
Python存取XML的常见方法实例分析
2017/03/21 Python
详解django.contirb.auth-认证
2018/07/16 Python
python使用tcp实现局域网内文件传输
2020/03/20 Python
详解python3中的真值测试
2018/08/13 Python
python3使用QQ邮箱发送邮件
2020/05/20 Python
浅谈python的输入输出,注释,基本数据类型
2019/04/02 Python
PyQt QCombobox设置行高的方法
2019/06/20 Python
django settings.py 配置文件及介绍
2019/07/15 Python
解决django中ModelForm多表单组合的问题
2019/07/18 Python
新加坡一家在线男士皮具品牌:Faire Leather Co.
2019/12/01 全球购物
感情真挚的毕业生求职信
2014/07/19 职场文书
2015年网络舆情工作总结
2015/07/24 职场文书
python opencv通过按键采集图片源码
2021/05/20 Python
MySQL中in和exists区别详解
2021/06/03 MySQL
python实现MD5进行文件去重的示例代码
2021/07/09 Python
Golang 字符串的常见操作
2022/04/19 Golang
python中 Flask Web 表单的使用方法
2022/05/20 Python
python计算列表元素与乘积详情
2022/08/05 Python