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 相关文章推荐
如何获得PHP相关资料
Oct 09 PHP
PHP与SQL注入攻击[三]
Apr 17 PHP
PHP 上传文件大小限制
Jul 05 PHP
LotusPhp笔记之:基于ObjectUtil组件的使用分析
May 06 PHP
关于更改Zend Studio/Eclipse代码风格主题的介绍
Jun 23 PHP
php使用反射插入对象示例分享
Mar 11 PHP
php绘制一条直线的方法
Jan 24 PHP
php实现ip白名单黑名单功能
Mar 12 PHP
PHP中iconv函数知识汇总
Jul 02 PHP
PHP框架laravel的.env文件配置教程
Jun 07 PHP
PHP实现通过strace定位故障原因的方法
Apr 29 PHP
php常用日期时间函数实例小结
Jul 04 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
php cli 方式 在crotab中运行解决
2010/02/08 PHP
从手册去理解分析PHP session机制
2011/07/17 PHP
php获取目标函数执行时间示例
2014/03/04 PHP
浅谈php优化需要注意的地方
2014/11/27 PHP
PHP内置的Math函数效率测试
2014/12/01 PHP
PHP答题类应用接口实例
2015/02/09 PHP
Yii框架日志记录Logging操作示例
2018/07/12 PHP
js一组验证函数
2008/12/20 Javascript
Javascript 面向对象编程(一) 封装
2011/08/28 Javascript
Extjs实现进度条的两种便捷方式
2013/09/26 Javascript
jQuery弹簧插件编写基础之“又见弹窗”
2015/12/11 Javascript
基于Angularjs实现分页功能
2016/05/30 Javascript
AngularJs学习第八篇 过滤器filter创建
2016/06/08 Javascript
angularjs ocLazyLoad分步加载js文件实例
2017/01/17 Javascript
深入理解 webpack 文件打包机制(小结)
2018/01/08 Javascript
微信web端后退强制刷新功能的实现代码
2018/03/04 Javascript
利用jquery和BootStrap实现动态滚动条效果
2018/12/03 jQuery
vue.js+elementUI实现点击左右箭头切换头像功能(类似轮播图效果)
2019/09/05 Javascript
[00:43]FTP典藏礼包 DOTA2三大英雄霸气新套装
2014/03/21 DOTA
详解Python中的文本处理
2015/04/11 Python
python计算时间差的方法
2015/05/20 Python
python基础教程之匿名函数lambda
2017/01/17 Python
使用python制作一个解压缩软件
2019/11/13 Python
Python使用jupyter notebook查看ipynb文件过程解析
2020/06/02 Python
Python matplotlib 绘制双Y轴曲线图的示例代码
2020/06/12 Python
Zavvi荷兰:英国大型音像制品和图书游戏零售商
2018/03/22 全球购物
Redbubble法国:由独立艺术家设计的独特产品
2019/01/08 全球购物
农行实习自我鉴定
2013/09/22 职场文书
统计学教授推荐信
2014/09/18 职场文书
判缓刑人员个人思想汇报
2014/10/10 职场文书
2014年初中班主任工作总结
2014/11/08 职场文书
升职感谢信
2015/01/22 职场文书
淮阳太昊陵导游词
2015/02/10 职场文书
javascript canvas实现雨滴效果
2021/06/09 Javascript
SpringBoot 拦截器妙用你真的了解吗
2021/07/01 Java/Android
win10此电脑打不开怎么办 win10双击此电脑无响应的解决办法
2022/07/23 数码科技