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 相关文章推荐
基于HTTP长连接的"服务器推"技术的php 简易聊天室
Oct 31 PHP
php xml 入门学习资料
Jan 01 PHP
php的memcached客户端memcached
Jun 14 PHP
php在服务器执行exec命令失败的解决方法
Mar 03 PHP
ThinkPHP框架任意代码执行漏洞的利用及其修复方法
Jul 04 PHP
PHP获取服务器端信息的方法
Nov 28 PHP
php上传图片客户端和服务器端实现方法
Mar 30 PHP
PHP图像处理类库及演示分享
May 17 PHP
PHP实现简单搜歌的方法
Jul 28 PHP
详解PHP处理字符串类似indexof的方法函数
Jun 11 PHP
php使用event扩展的io复用测试的示例
Oct 20 PHP
Docker 安装 PHP并与Nginx的部署实例讲解
Feb 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
PHP将整个网站生成HTML纯静态网页的方法总结
2012/02/05 PHP
PHP缓存机制Output Control详解
2014/07/14 PHP
PHP中使用break跳出多重循环代码实例
2015/01/21 PHP
浅谈PHP中的面向对象OOP中的魔术方法
2017/06/12 PHP
PHP swoole和redis异步任务实现方法分析
2019/08/12 PHP
14款NodeJS Web框架推荐
2014/07/11 NodeJs
JS和css实现检测移动设备方向的变化并判断横竖屏幕
2015/05/25 Javascript
在Ubuntu系统上安装Ghost博客平台的教程
2015/06/17 Javascript
详解JavaScript逻辑Not运算符
2015/12/04 Javascript
JavaScript+html5 canvas实现本地截图教程
2020/04/16 Javascript
浅谈jQuery中ajaxPrefilter的应用
2016/08/01 Javascript
基于百度地图实现产品销售的单位位置查看功能设计与实现
2016/10/21 Javascript
JS中数据结构之栈
2019/01/01 Javascript
详解微信小程序框架wepy踩坑记录(与vue对比)
2019/03/12 Javascript
微信小程序JS加载esmap地图的实例详解
2019/09/04 Javascript
在vue中利用全局路由钩子给url统一添加公共参数的例子
2019/11/01 Javascript
JQuery通过键盘控制键盘按下与松开触发事件
2020/08/07 jQuery
jquery实现拖拽小方块效果
2020/12/10 jQuery
[01:06:25]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
讲解Python中运算符使用时的优先级
2015/05/14 Python
Python脚本实时处理log文件的方法
2016/11/21 Python
Python爬虫实现网页信息抓取功能示例【URL与正则模块】
2017/05/18 Python
python抖音表白程序源代码
2019/04/07 Python
Django框架基础模板标签与filter使用方法详解
2019/07/23 Python
django+tornado实现实时查看远程日志的方法
2019/08/12 Python
python 进程的几种创建方式详解
2019/08/29 Python
Django 路由层URLconf的实现
2019/12/30 Python
Python3连接Mysql8.0遇到的问题及处理步骤
2020/02/17 Python
python同时遍历两个list用法说明
2020/05/02 Python
10 套华丽的CSS3 按钮小结
2012/10/03 HTML / CSS
HTML5实现移动端点击翻牌功能
2020/10/23 HTML / CSS
英国大码女性时装零售商:Evans
2018/08/29 全球购物
优秀家长自荐材料
2014/08/26 职场文书
民族精神月活动总结
2014/08/28 职场文书
2015年度高中教师工作总结
2015/05/26 职场文书
2016年优秀团支部事迹材料
2016/02/26 职场文书