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下图片文字混合水印与缩略图实现代码
Dec 11 PHP
使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
Aug 02 PHP
PHP缓存技术的使用说明
Aug 06 PHP
Laravel 5框架学习之模型、控制器、视图基础流程
Apr 08 PHP
php实现的简易扫雷游戏实例
Jul 09 PHP
PHP读取zip文件的方法示例
Nov 17 PHP
PHP+Ajax 检测网络是否正常实例详解
Dec 16 PHP
php实现购物车功能(以大苹果购物网为例)
Mar 09 PHP
php strftime函数的详细用法
Jun 21 PHP
PHP chr()函数讲解
Feb 11 PHP
Laravel框架路由管理简单示例
May 07 PHP
PHP单文件上传原理及上传函数的封装操作示例
Sep 02 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中substr()与explode()函数用法分析
2014/11/24 PHP
PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】
2019/09/10 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
基于jquery的当鼠标滚轮到最底端继续加载新数据思路分享(多用于微博、空间、论坛 )
2011/10/10 Javascript
键盘KeyCode值列表汇总
2013/11/26 Javascript
jQuery获取当前对象标签名称的方法
2014/02/07 Javascript
Js实现滚动变色的文字效果
2014/06/16 Javascript
JavaScript动态改变表格单元格内容的方法
2015/03/30 Javascript
jQuery实现冻结表格行和列
2015/04/29 Javascript
JS实现Select的option上下移动的方法
2016/03/01 Javascript
教大家轻松制作Bootstrap漂亮表格(table)
2016/12/13 Javascript
jQuery Validate让普通按钮触发表单验证的方法
2016/12/15 Javascript
微信小程序 两种滑动方式(横向滑动,竖向滑动)详细及实例代码
2017/01/13 Javascript
微信小程序 数据交互与渲染实例详解
2017/01/21 Javascript
浅谈vue加载优化策略
2019/03/19 Javascript
微信小程序 腾讯地图SDK 获取当前地址实现解析
2019/08/12 Javascript
微信h5静默和非静默授权获取用户openId的方法和步骤
2020/06/08 Javascript
[03:46]显微镜下的DOTA2第七期——满血与残血
2014/06/20 DOTA
[28:42]Ti4正赛VG vs NEWBEE1
2014/07/19 DOTA
python连接池实现示例程序
2013/11/26 Python
python使用cookielib库示例分享
2014/03/03 Python
python九九乘法表的实例
2017/09/26 Python
python3实现爬取淘宝美食代码分享
2018/09/23 Python
python实现全盘扫描搜索功能的方法
2019/02/14 Python
python给微信好友定时推送消息的示例
2019/02/20 Python
Python之变量类型和if判断方式
2020/05/05 Python
MATLAB数学建模之画图汇总
2020/07/16 Python
详解Anaconda安装tensorflow报错问题解决方法
2020/11/01 Python
Currentbody澳大利亚:美容仪专家
2019/11/11 全球购物
应届本科生推荐信范文
2013/12/25 职场文书
汉语言文学毕业生自荐信范文
2014/03/24 职场文书
中医学专业自荐信范文
2014/04/01 职场文书
工作失误检讨书(经典集锦版)
2014/10/17 职场文书
劳动者解除劳动合同通知书
2015/04/16 职场文书
golang 实现菜单树的生成方式
2021/04/28 Golang
使用opencv-python如何打开USB或者笔记本前置摄像头
2022/06/21 Python