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类
Jul 15 PHP
增加反向链接的101个方法 站长推荐
Jan 31 PHP
一步一步学习PHP(4) php 函数 补充2
Feb 15 PHP
《PHP编程最快明白》第三讲:php数组
Nov 01 PHP
php中比较简单的导入phpmyadmin生成的sql文件的方法
Jun 28 PHP
php中修改浏览器的User-Agent来伪装你的浏览器和操作系统
Jul 29 PHP
如何使用“PHP” 彩蛋进行敏感信息获取
Aug 07 PHP
php实现mysql封装类示例
May 07 PHP
php数组函数array_key_exists()小结
Dec 10 PHP
yii数据库的查询方法
Dec 28 PHP
php代码检查代理ip的有效性
Aug 19 PHP
PHP 裁剪图片
Mar 09 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
【COS正片】蕾姆睡衣cos,纯洁可爱被治愈了 cn名濑弥七
2020/03/02 日漫
利用phpExcel实现Excel数据的导入导出(全步骤详细解析)
2013/11/26 PHP
php购物车实现方法
2015/01/03 PHP
php简单防盗链实现方法
2015/07/29 PHP
Array.slice()与Array.splice()的返回值类型
2006/10/09 Javascript
jQuery的链式调用浅析
2010/12/03 Javascript
js控制CSS样式属性语法对照表
2012/12/11 Javascript
javascript中日期转换成时间戳的小例子
2013/03/21 Javascript
ie下jquery.getJSON的缓存问题的处理方法
2013/03/29 Javascript
node.js中的console.time方法使用说明
2014/12/09 Javascript
jQuery基础知识点总结(必看)
2016/05/31 Javascript
通过bootstrap全面学习less
2016/11/09 Javascript
JavaScript ES6中CLASS的使用详解
2016/11/22 Javascript
浅谈JS如何实现真正的对象常量
2017/06/25 Javascript
JavaScript中的FileReader图片预览上传功能实现代码
2017/07/24 Javascript
Node.js readline 逐行读取、写入文件内容的示例
2018/03/01 Javascript
Koa2 之文件上传下载的示例代码
2018/03/29 Javascript
vue.js删除列表中的一行
2018/06/30 Javascript
详解easyui基于 layui.laydate日期扩展组件
2018/07/18 Javascript
Node.js创建一个Express服务的方法详解
2020/01/06 Javascript
微信小程序连接服务器展示MQTT数据信息的实现
2020/07/14 Javascript
js canvas实现五子棋小游戏
2021/01/22 Javascript
Python中__init__.py文件的作用详解
2016/09/18 Python
Python学生成绩管理系统简洁版
2020/04/05 Python
在python tkinter中Canvas实现进度条显示的方法
2019/06/14 Python
Python2与Python3的区别点整理
2019/12/12 Python
Pytorch 多维数组运算过程的索引处理方式
2019/12/27 Python
python opencv如何实现图片绘制
2020/01/19 Python
html table呈现个人简历以及单元格宽度失效的问题解决
2021/01/22 HTML / CSS
戴森比利时官方网站:Dyson BE
2020/10/03 全球购物
泰国最新活动和优惠:Megatix
2020/05/07 全球购物
大学生毕业求职简历的自我评价
2013/10/24 职场文书
民用住房租房协议书
2014/10/29 职场文书
运动会观后感
2015/06/09 职场文书
使用pandas模块实现数据的标准化操作
2021/05/14 Python
浅谈怎么给Python添加类型标注
2021/06/08 Python