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
php 什么是PEAR?(第二篇)
Mar 19 PHP
PHP得到某段时间区间的时间戳 php定时任务
Apr 12 PHP
PHP判断指定时间段的2个方法
Mar 14 PHP
基于PHP实现简单的随机抽奖小程序
Jan 05 PHP
ThinkPHP中html:list标签用法分析
Jan 09 PHP
解读PHP的Yii框架中请求与响应的处理流程
Mar 17 PHP
PHP编写的图片验证码类文件分享
Jun 06 PHP
laravel5使用freetds连接sql server的方法
Dec 07 PHP
PDO::getAvailableDrivers讲解
Jan 28 PHP
php实现微信分享朋友链接功能
Feb 18 PHP
php array_map()函数实例用法
Mar 03 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读取3389的脚本
2014/05/06 PHP
Yii2.0高级框架数据库增删改查的一些操作
2015/11/16 PHP
WordPress中注册菜单与调用菜单的方法详解
2015/12/18 PHP
PHP简单实现上一页下一页功能示例
2016/09/14 PHP
Zend Framework常用校验器详解
2016/12/09 PHP
php中文乱码问题的终极解决方案汇总
2017/08/01 PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
2019/03/11 PHP
Laravel框架表单验证操作实例分析
2019/09/30 PHP
Javascript 布尔型分析
2008/12/22 Javascript
JavaScript 新手24条实用建议[TUTS+]
2009/06/21 Javascript
jQuery 判断页面元素是否存在的代码
2009/08/14 Javascript
用jquery与css打造个性化的单选框和复选框
2010/10/20 Javascript
Dom在ajax技术中的作用说明
2010/10/25 Javascript
JS通过相同的name进行表格求和代码
2013/08/18 Javascript
温习Javascript基础语法之词法结构
2016/05/31 Javascript
wap手机端解决返回上一页的js实例
2016/12/08 Javascript
webpack入门必知必会
2017/01/16 Javascript
css和js实现弹出登录居中界面完整代码
2017/11/26 Javascript
vue中使用echarts制作圆环图的实例代码
2018/07/27 Javascript
vue环形进度条组件实例应用
2018/10/10 Javascript
Windows下Node爬虫神器Puppeteer安装记
2019/01/09 Javascript
vue-router传参用法详解
2019/01/19 Javascript
JS回调函数简单易懂的入门实例分析
2019/09/29 Javascript
p5.js临摹动态图形实现方法详解
2019/10/23 Javascript
说一说Python logging
2016/04/15 Python
使用Python读写及压缩和解压缩文件的示例
2016/07/08 Python
python使用PyQt5的简单方法
2019/02/27 Python
利用Python半自动化生成Nessus报告的方法
2019/03/19 Python
使用python 对验证码图片进行降噪处理
2019/12/18 Python
python通过安装itchat包实现微信自动回复收到的春节祝福
2020/01/19 Python
迪卡侬印度官网:购买所有体育用品
2017/06/24 全球购物
巴西最大的运动品牌:Olympikus
2020/07/14 全球购物
青年志愿者先进事迹
2014/05/06 职场文书
品质保证书格式
2015/02/28 职场文书
Java Optional<Foo>转换成List<Bar>的实例方法
2021/06/20 Java/Android
MySQL系列之十 MySQL事务隔离实现并发控制
2021/07/02 MySQL