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实现登陆验证码(类似条行码状)
Oct 09 PHP
高亮度显示php源代码
Oct 09 PHP
PHP初学入门
Nov 19 PHP
PHP+MySQL 制作简单的留言本
Nov 02 PHP
对text数据类型不支持代码页转换 从: 1252 到: 936
Apr 23 PHP
PHP中time(),date(),mktime()区别介绍
Sep 28 PHP
PHP中提问频率最高的11个面试题和答案
Sep 02 PHP
PHP闭包函数传参及使用外部变量的方法
Mar 15 PHP
PHP读取mssql json数据中文乱码的解决办法
Apr 11 PHP
php封装的smartyBC类完整实例
Oct 19 PHP
php 浮点数比较方法详解
May 05 PHP
php TP5框架生成二维码链接
Apr 01 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
打造计数器DIY三步曲(中)
2006/10/09 PHP
详解WordPress开发中的get_post与get_posts函数使用
2016/01/04 PHP
YII框架学习笔记之命名空间、操作响应与视图操作示例
2019/04/30 PHP
Yii2框架配置文件(Application属性)与调试技巧实例分析
2019/05/27 PHP
PHP字符串和十六进制如何实现互相转换
2020/07/16 PHP
JAVASCRIPT HashTable
2007/01/22 Javascript
JavaScript基础知识之数据类型
2012/08/06 Javascript
解析jquery中的ajax缓存问题
2013/12/19 Javascript
js showModalDialog参数的使用详解
2014/01/07 Javascript
淘宝网提供的国内NPM镜像简介和使用方法
2014/04/17 Javascript
用JavaScript获取页面文档内容的实现代码
2016/06/10 Javascript
javascript学习笔记_浅谈基础语法,类型,变量
2016/09/19 Javascript
AngularJS实现根据变量改变动态加载模板的方法
2016/11/04 Javascript
详解Vuejs2.0之异步跨域请求
2017/04/20 Javascript
vue基于element-ui的三级CheckBox复选框功能的实现代码
2018/10/15 Javascript
fastadmin中调用js的方法
2019/05/14 Javascript
在Node.js中将SVG图像转换为PNG,JPEG,TIFF,WEBP和HEIF格式的方法
2019/08/22 Javascript
如何基于JS截获动态代码
2019/12/25 Javascript
jquery css实现流程进度条
2020/03/26 jQuery
js轮播图之旋转木马效果
2020/10/13 Javascript
使用 Python 获取 Linux 系统信息的代码
2014/07/13 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
2020/02/17 Python
python能自学吗
2020/06/18 Python
YOOX美国官方网站:全球著名的多品牌时尚网络概念店
2016/09/11 全球购物
中文师范生自荐信
2014/01/30 职场文书
工作评语大全
2014/04/26 职场文书
我的小天地教学反思
2014/04/30 职场文书
十佳家长事迹材料
2014/08/26 职场文书
党员四风剖析材料
2014/08/27 职场文书
个人授权委托书
2014/09/15 职场文书
银行奉献演讲稿
2014/09/16 职场文书
辞职信格式模板
2015/02/27 职场文书
基层组织建设年活动总结
2015/05/09 职场文书
SQLServer中JSON文档型数据的查询问题解决
2021/06/27 SQL Server
Python 文字识别
2022/05/11 Python
在windows server 2012 r2中安装mysql的详细步骤
2022/07/23 Servers