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 相关文章推荐
WML,Apache,和 PHP 的介绍
Oct 09 PHP
JSON在PHP中的应用介绍
Sep 08 PHP
解析php做推送服务端实现ios消息推送
Jul 01 PHP
php中__destruct与register_shutdown_function执行的先后顺序问题
Oct 17 PHP
PHP结合jQuery实现找回密码
Jul 22 PHP
为你总结一些php信息函数
Oct 21 PHP
PHP使用socket发送HTTP请求的方法
Feb 14 PHP
自制PHP框架之设计模式
May 07 PHP
php表单处理操作
Nov 16 PHP
PHP 多任务秒级定时器的实现方法
May 13 PHP
PHP实现生成数据字典功能示例
May 24 PHP
yii框架结合charjs实现统计30天数据的方法
Apr 04 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
为什么夜间收到的中波电台比白天多
2021/03/01 无线电
php递归列出所有文件和目录的代码
2008/09/10 PHP
Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)
2012/07/23 PHP
php计算两个日期时间差(返回年、月、日)
2014/06/19 PHP
PHP编程中的常见漏洞和代码实例
2014/08/06 PHP
php生成过去100年下拉列表的方法
2015/07/20 PHP
PHP+原生态ajax实现的省市联动功能详解
2017/08/15 PHP
经常用的图片在容器中的水平垂直居中实例
2007/06/10 Javascript
javascript 使用 NodeList需要注意的问题
2013/03/04 Javascript
javascript使用闭包模拟对象的私有属性和方法
2016/10/05 Javascript
KnockoutJS 3.X API 第四章之表单value绑定
2016/10/10 Javascript
浅谈jQuery中Ajax事件beforesend及各参数含义
2016/12/03 Javascript
JavaScript字符串对象
2017/01/14 Javascript
Vue页面骨架屏的实现方法
2018/05/22 Javascript
在Bootstrap开发框架中使用dataTable直接录入表格行数据的方法
2018/10/25 Javascript
微信小程序下拉框功能的实例代码
2018/11/06 Javascript
vue实现分页组件
2020/06/16 Javascript
JS事件绑定的常用方式实例总结
2019/03/02 Javascript
Vue ​v-model相关知识总结
2021/01/28 Vue.js
python登录QQ邮箱发信的实现代码
2013/02/10 Python
简化Python的Django框架代码的一些示例
2015/04/20 Python
Python 数据结构之队列的实现
2017/01/22 Python
python 遍历字符串(含汉字)实例详解
2017/04/04 Python
利用python求相邻数的方法示例
2017/08/18 Python
Flask解决跨域的问题示例代码
2018/02/12 Python
Python实现简单http服务器
2018/04/12 Python
python实现傅里叶级数展开的实现
2018/07/21 Python
python pytest进阶之xunit fixture详解
2019/06/27 Python
Django框架组成结构、基本概念与文件功能分析
2019/07/30 Python
Python实现点云投影到平面显示
2020/01/18 Python
Pytorch环境搭建与基本语法
2020/06/03 Python
安全施工责任书
2014/08/25 职场文书
领导班子遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
酒店宣传语大全
2015/07/13 职场文书
python numpy中setdiff1d的用法说明
2021/04/22 Python
mysql如何能有效防止删库跑路
2021/10/05 MySQL