php写入txt乱码的解决方法


Posted in PHP onSeptember 17, 2019

相信很多人在使用PHP的过程中都遇到过生成文件乱码的情况,不论是使用fwrite还是file_put_contents写入。可能你会先尝试从编码入手尝试解决,但最终的结果往往是不理想的,尽管我们都将其转换为了UTF-8编码了...

那么究其根本原因是什么呢?就是缺少头部BOM(当然,这里指的肯定不是Js的Bom)。

BOM

既然提到了BOM,那么可能有的同学不太了解这个家伙,这里我简单说一下,老鸟可以跳过。在Windows下用记事本之类的程序将文本文件保存为UTF-8格式时,记事本会在文件头前面加上几个不可见的字符(EF BB BF),就是所谓的BOM(Byte order Mark)。

不仅限于 记事本保存的文件,只要在文件的开口包含了“EF BB BF” 几个不可见的字符(十六进制应该是是xEFxBBxBF,用二进制编辑文件可见)。这像是一个约定俗成的东西,当系统看到这玩意的时候,就会觉得你这个文件是UTF-8编码的。

这就是为什么当文件没有BOM时,你给用户呈现的文件就可能是乱码的原因了。

PS : 其实你可以将BOM理解成HTML中的charset属性和XML中的encoding属性,就是起一个标识作用。

解决办法

那么如何在PHP中输出BOM呢?

答案是在所有内容输出之前输出:

print(chr(0xEF).chr(0xBB).chr(0xBF));

当然,如果你是在生成文件,可能是下面两种:

fwrite($file, chr(0xEF).chr(0xBB).chr(0xBF));

file_put_contents($file, chr(0xEF).chr(0xBB).chr(0xBF));

以上就是php写入txt乱码的详细内容,感谢大家对三水点靠木的支持。

PHP 相关文章推荐
基于文本的搜索
Oct 09 PHP
window+nginx+php环境配置 附配置搭配说明
Dec 29 PHP
php中global和$GLOBALS[]的分析之一
Feb 02 PHP
PHP 透明水印生成代码
Aug 27 PHP
PHP怎么实现网站保存快捷方式方便用户随时浏览
Aug 15 PHP
php实现httpclient类示例
Apr 08 PHP
php数组查找函数in_array()、array_search()、array_key_exists()使用实例
Apr 29 PHP
PHP文件与目录操作示例
Dec 24 PHP
常用PHP封装分页工具类
Jan 14 PHP
Thinkphp5.0自动生成模块及目录的方法详解
Apr 17 PHP
Thinkphp开发--集成极光推送
Sep 15 PHP
php中访问修饰符的知识点总结
Jan 27 PHP
解决php写入数据库乱码的问题
Sep 17 #PHP
php写入文件不覆盖的实例讲解
Sep 17 #PHP
php提供实现反射的方法和实例代码
Sep 17 #PHP
php探针使用原理和技巧讲解
Sep 17 #PHP
php探针不显示内存解决方法
Sep 17 #PHP
Laravel 模型关联基础教程详解
Sep 17 #PHP
PHP实现的微信APP支付功能示例【基于TP5框架】
Sep 16 #PHP
You might like
WordPress开发中的get_post_custom()函数使用解析
2016/01/04 PHP
详解PHP PDO简单教程
2019/05/28 PHP
Highcharts 非常实用的Javascript统计图demo示例
2013/07/03 Javascript
JS小功能(onmouseover实现选择月份)实例代码
2013/11/28 Javascript
javascript倒计时效果实现
2015/11/12 Javascript
JavaScript匿名函数之模仿块级作用域
2015/12/12 Javascript
js中flexible.js实现淘宝弹性布局方案
2020/06/23 Javascript
全面解析标签页的切换方式
2016/08/21 Javascript
AngularJS递归指令实现Tree View效果示例
2016/11/07 Javascript
@ResponseBody 和 @RequestBody 注解的区别
2017/03/08 Javascript
Express框架之connect-flash详解
2017/05/31 Javascript
JS实现移动端判断上拉和下滑功能
2017/08/07 Javascript
vue2.0实现音乐/视频播放进度条组件
2018/06/06 Javascript
详解微信小程序的 request 封装示例
2018/08/21 Javascript
vuejs数据超出单行显示更多,点击展开剩余数据实例
2019/05/05 Javascript
在Layui中操作数据表格,给指定单元格添加事件示例
2019/10/26 Javascript
js实现上传按钮并显示缩略图小轮子
2020/05/04 Javascript
[47:06]DOTA2上海特级锦标赛主赛事日 - 4 败者组第五轮 MVP.Phx VS EG第一局
2016/03/05 DOTA
Python zip()函数用法实例分析
2018/03/17 Python
Python简单爬虫导出CSV文件的实例讲解
2018/07/06 Python
python实现三维拟合的方法
2018/12/29 Python
Django model select的多种用法详解
2019/07/16 Python
python 实现二维列表转置
2019/12/02 Python
Python实现使用dir获取类的方法列表
2019/12/24 Python
python两个_多个字典合并相加的实例代码
2019/12/26 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
2020/03/11 Python
CSS3实现DIV圆角效果完整代码
2012/10/10 HTML / CSS
HTML最新标准HTML5总结(必看)
2016/06/13 HTML / CSS
2014年基层党组织公开承诺书
2014/03/29 职场文书
竞聘演讲稿精彩开头和结尾
2014/05/14 职场文书
安全责任书模板
2014/07/22 职场文书
乡镇机关党员民主评议表自我评价
2014/09/21 职场文书
区长工作作风个人整改措施
2014/10/01 职场文书
民用住房租房协议书
2014/10/29 职场文书
有关浪费资源的建议书
2015/09/14 职场文书
小学作文指导之如何写人?
2019/07/08 职场文书