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 相关文章推荐
在任意字符集下正常显示网页的方法二(续)
Apr 01 PHP
PHP添加MySQL数据记录代码
Jun 07 PHP
ThinkPHP结合AjaxFileUploader实现无刷新文件上传的方法
Oct 29 PHP
IIS下PHP的三种配置方式对比
Nov 20 PHP
PHP开发框架laravel安装与配置教程
Mar 13 PHP
php上传图片获取路径及给表单字段赋值的方法
Jan 23 PHP
PHP实现截取中文字符串不出现?号的解决方法
Dec 29 PHP
在PHP 7下安装Swoole与Yar,Yaf的方法教程
Jun 02 PHP
php实现的pdo公共类定义与用法示例
Jul 19 PHP
PHP简单实现循环链表功能示例
Nov 10 PHP
Yii2 中实现单点登录的方法
Mar 09 PHP
PHP实现随机发扑克牌
Apr 22 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
laravel5.4利用163邮箱发送邮件的步骤详解
2017/09/22 PHP
Ecshop 后台添加新功能栏目及管理权限设置教程
2017/11/21 PHP
php框架CI(codeigniter)自动加载与自主创建对象操作实例分析
2020/06/06 PHP
类似框架的js代码
2006/11/09 Javascript
两种方法实现文本框输入内容提示消失
2013/03/17 Javascript
jquery()函数的三种语法介绍
2013/10/09 Javascript
js简单的弹出框有关闭按钮
2014/05/05 Javascript
jQuery中的Deferred和promise 的区别
2016/04/03 Javascript
js ajaxfileupload.js上传报错的解决方法
2016/05/05 Javascript
jQuery+ajax实现滚动到页面底部自动加载图文列表效果(类似图片懒加载)
2016/06/07 Javascript
AngularJS bootstrap启动详解及实例代码
2016/09/14 Javascript
JavaScript基础之this详解
2017/06/04 Javascript
Vue入门之animate过渡动画效果
2018/04/08 Javascript
微信小程序实现的绘制table表格功能示例
2019/04/26 Javascript
微信小程序实现定位及到指定位置导航的示例代码
2019/08/20 Javascript
vue项目或网页上实现文字转换成语音播放功能
2020/06/09 Javascript
vue-cli3配置favicon.ico和title的流程
2020/10/27 Javascript
nuxt.js添加环境变量,区分项目打包环境操作
2020/11/06 Javascript
[03:47]2015国际邀请赛第三日现场精彩回顾
2015/08/08 DOTA
举例讲解Python的Tornado框架实现数据可视化的教程
2015/05/02 Python
python+ffmpeg视频并发直播压力测试
2018/03/06 Python
flask/django 动态查询表结构相同表名不同数据的Model实现方法
2019/08/29 Python
Python安装依赖(包)模块方法详解
2020/02/14 Python
使用matlab 判断两个矩阵是否相等的实例
2020/05/11 Python
把富文本的回车转为br标签
2019/08/09 HTML / CSS
怎样实现H5+CSS3手指滑动切换图片的示例代码
2019/05/05 HTML / CSS
初一体育教学反思
2014/01/29 职场文书
测试工程师程序员求职信范文
2014/02/20 职场文书
2015年建党94周年演讲稿
2015/03/19 职场文书
语文教师求职信范文
2015/03/20 职场文书
详解如何修改nginx的默认端口
2021/03/31 Servers
canvas多重阴影发光效果实现
2021/04/20 Javascript
Matlab如何实现矩阵复制扩充
2021/06/02 Python
css实现两栏布局,左侧固定宽,右侧自适应的多种方法
2021/08/07 HTML / CSS
Linux7.6二进制安装Mysql8.0.27详细操作步骤
2021/11/27 MySQL
Elasticsearch 配置详解
2022/04/19 Java/Android