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 常见郁闷问题答解
Nov 25 PHP
php生成的html meta和link标记在body标签里 顶部有个空行
May 18 PHP
PHP mcrypt可逆加密算法分析
Jul 19 PHP
基于PHP常用字符串的总结(待续)
Jun 07 PHP
深入PHP5中的魔术方法详解
Jun 17 PHP
php中get_meta_tags()、CURL与user-agent用法分析
Dec 16 PHP
PHP中iconv函数转码时截断字符问题的解决方法
Jan 21 PHP
php cookie工作原理与实例详解
Jul 18 PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
Oct 28 PHP
PHP实现在数据库百万条数据中随机获取20条记录的方法
Apr 19 PHP
Laravel重定向,a链接跳转,控制器跳转示例
Oct 22 PHP
Laravel服务容器绑定的几种方法总结
Jun 14 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
cache_lite试用
2007/02/14 PHP
深入PHP FTP类的详解
2013/06/13 PHP
Yii获取当前url和域名的方法
2015/06/08 PHP
php常用的工具开发整理
2019/09/26 PHP
TNC vs RR BO3 第一场 2.14
2021/03/10 DOTA
JavaScript 判断浏览器是否支持SVG的代码
2013/03/21 Javascript
javascript中不提供sleep功能如何实现这个功能
2014/05/27 Javascript
Angular表单验证实例详解
2016/10/20 Javascript
JavaScript学习笔记之基于定时器实现图片无缝滚动功能详解
2019/01/09 Javascript
sortable+element 实现表格行拖拽的方法示例
2019/06/07 Javascript
JavaScript布尔运算符原理使用解析
2020/05/06 Javascript
[36:09]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
github配置使用指南
2014/11/18 Python
Python使用dis模块把Python反编译为字节码的用法详解
2016/06/14 Python
使用Python将数组的元素导出到变量中(unpacking)
2016/10/27 Python
Python如何为图片添加水印
2016/11/25 Python
django2.0扩展用户字段示例
2019/02/13 Python
浅谈PYTHON 关于文件的操作
2019/03/19 Python
django有外键关系的两张表如何相互查找
2020/02/10 Python
wxpython自定义下拉列表框过程图解
2020/02/14 Python
Python 读取WAV音频文件 画频谱的实例
2020/03/14 Python
python基于pexpect库自动获取日志信息
2021/02/01 Python
CSS3 清除浮动的方法示例
2018/06/01 HTML / CSS
html标签之Object和EMBED标签详解
2013/07/04 HTML / CSS
canvas实现圆形进度条动画的示例代码
2017/12/26 HTML / CSS
林清轩官方网站:山茶花润肤油开创者
2016/10/26 全球购物
什么是规则表达式
2012/05/03 面试题
《桂林山水》教学反思
2014/02/08 职场文书
个人公开承诺书
2014/03/28 职场文书
涉密人员保密承诺书
2014/05/28 职场文书
违反交通法规检讨书
2014/09/10 职场文书
党政领导班子群众路线对照检查材料
2014/10/26 职场文书
超市食品安全承诺书
2015/04/29 职场文书
2016年推广普通话宣传周活动总结
2016/04/06 职场文书
在redisCluster中模糊获取key方式
2021/07/09 Redis
MySQL中IO问题的深入分析与优化
2022/04/02 MySQL