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 相关文章推荐
如何限制访问者的ip(PHPBB的代码)
Oct 09 PHP
PHP如何得到当前页和上一页的地址?
Nov 27 PHP
谈谈新手如何学习PHP
Dec 23 PHP
asp和php下textarea提交大量数据发生丢失的解决方法
Jan 20 PHP
php Static关键字实用方法
Jun 04 PHP
PHP PDOStatement:bindParam插入数据错误问题分析
Nov 13 PHP
IIS下PHP的三种配置方式对比
Nov 20 PHP
php使用GD实现颜色渐变实例
Jun 02 PHP
PHP查看SSL证书信息的方法
Sep 22 PHP
PHP自定义函数判断是否为Get、Post及Ajax提交的方法
Jul 27 PHP
PHP实现将标点符号正则替换为空格的方法
Aug 09 PHP
Laravel学习教程之路由模块
Aug 18 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实现生成HTML静态页面
2015/11/18 PHP
PHP统计目录中文件以及目录中目录大小的方法
2016/01/09 PHP
php与python实现的线程池多线程爬虫功能示例
2016/10/12 PHP
javascript是怎么继承的介绍
2012/01/05 Javascript
fancybox modal的完美解决(右上的X)
2012/10/30 Javascript
Bootstrap每天必学之附加导航(Affix)插件
2016/04/25 Javascript
动态更新highcharts数据的实现方法
2016/05/28 Javascript
原生的强大DOM选择器querySelector介绍
2016/12/21 Javascript
利用vue.js插入dom节点的方法
2017/03/15 Javascript
详解react-router4 异步加载路由两种方法
2017/09/12 Javascript
基于input动态模糊查询的实现方法
2017/12/12 Javascript
微信小程序HTTP接口请求封装的实现
2019/02/21 Javascript
详细教你微信公众号正文页SVG交互开发技巧
2019/07/25 Javascript
[55:32]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第二场
2018/04/05 DOTA
[45:06]完美世界DOTA2联赛PWL S2 Magma vs InkIce 第二场 11.28
2020/12/02 DOTA
[01:12:53]完美世界DOTA2联赛PWL S2 Forest vs SZ 第一场 11.25
2020/11/26 DOTA
Python类的专用方法实例分析
2015/01/09 Python
使用Python的web.py框架实现类似Django的ORM查询的教程
2015/05/02 Python
用Python实现KNN分类算法
2017/12/22 Python
python写入已存在的excel数据实例
2018/05/03 Python
Python中的函数式编程:不可变的数据结构
2018/10/08 Python
Python使用while循环花式打印乘法表
2019/01/28 Python
浅谈sklearn中predict与predict_proba区别
2020/06/28 Python
解决python和pycharm安装gmpy2 出现ERROR的问题
2020/08/28 Python
解决H5的a标签的download属性下载service上的文件出现跨域问题
2019/07/16 HTML / CSS
关于webview适配H5上传照片或者视频文件的方法
2020/11/04 HTML / CSS
Moss Bros官网:英国排名第一的西装店
2020/02/26 全球购物
Java面试中常遇到的问题,也是需要注意的几点
2013/08/30 面试题
揭牌仪式主持词
2014/03/19 职场文书
一年级小学生评语
2014/04/22 职场文书
岳庙导游词
2015/02/04 职场文书
校长个人总结
2015/03/03 职场文书
离婚起诉书范本
2015/05/18 职场文书
教师教育心得体会
2016/01/19 职场文书
学习计划是什么
2019/04/30 职场文书
Mysql排查分析慢sql之explain实战案例
2022/04/19 MySQL