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 最大运行时间 max_execution_time修改方法
Mar 08 PHP
PHP 5.3.1 安装包 VC9 VC6不同版本的区别是什么
Jul 04 PHP
Apache下禁止php文件被直接访问的解决方案
Apr 25 PHP
Laravel框架数据库CURD操作、连贯操作总结
Sep 03 PHP
php实现屏蔽掉黑帽SEO的搜索关键字
Apr 15 PHP
PHP使用递归方式列出当前目录下所有文件的方法
Jun 02 PHP
php实现购物车功能(上)
Jul 23 PHP
教你php如何实现验证码
Jan 20 PHP
Composer设置忽略版本匹配的方法
Apr 27 PHP
PHP实现的链式队列结构示例
Sep 15 PHP
PHP微信发送推送消息乱码的解决方法
Feb 28 PHP
PHP tp5中使用原生sql查询代码实例
Oct 28 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脚本的10个技巧(3)
2006/10/09 PHP
PHP安全配置详细说明
2011/09/26 PHP
php通过字符串调用函数示例
2014/03/02 PHP
php通过array_merge()函数合并两个数组的方法
2015/03/18 PHP
php生成curl命令行的方法
2015/12/14 PHP
简单谈谈php延迟静态绑定
2016/01/26 PHP
PHP二维数组排序简单实现方法
2016/02/14 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
前台js调用后台方法示例
2013/12/02 Javascript
使用AngularJS来实现HTML页面嵌套的方法
2015/06/17 Javascript
ajax如何实现页面局部跳转与结果返回
2015/08/24 Javascript
jQuery each函数源码分析
2016/05/25 Javascript
vue登录注册及token验证实现代码
2017/12/14 Javascript
vue-cli配置文件——config篇
2018/01/04 Javascript
解决vue页面刷新或者后退参数丢失的问题
2018/03/13 Javascript
spirngmvc js传递复杂json参数到controller的实例
2018/03/29 Javascript
JavaScript引用类型Date常见用法实例分析
2018/08/08 Javascript
解决layer弹出层自适应页面大小的问题
2019/09/16 Javascript
解决vuex数据页面刷新后初始化操作
2020/07/26 Javascript
[59:35]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第二局
2016/03/04 DOTA
在Python下进行UDP网络编程的教程
2015/04/29 Python
Python按行读取文件的实现方法【小文件和大文件读取】
2016/09/19 Python
python利用不到一百行代码实现一个小siri
2017/03/02 Python
用Python登录好友QQ空间点赞的示例代码
2017/11/04 Python
django实现支付宝支付实例讲解
2019/10/17 Python
python3.6环境下安装freetype库和基本使用方法(推荐)
2020/05/10 Python
苏宁红孩子母婴商城:redbaby
2017/02/12 全球购物
天巡全球:Skyscanner Global
2017/06/20 全球购物
城市观光通行证:The Sightseeing Pass
2018/04/28 全球购物
广告学专业推荐信范文
2013/11/23 职场文书
聚美优品恶搞广告词
2014/03/14 职场文书
出纳岗位职责范本
2015/03/31 职场文书
小学体育组工作总结2015
2015/07/21 职场文书
初中英语教学随笔
2015/08/15 职场文书
2016党员发展对象培训心得体会
2016/01/08 职场文书
2020年个人安全保证书参考模板
2020/01/08 职场文书