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生成WAP页面
Oct 09 PHP
PHP+MySQL5.0中文乱码解决方法
Nov 20 PHP
php 设计模式之 单例模式
Dec 19 PHP
解析百度搜索结果link?url=参数分析 (全)
Oct 09 PHP
php判断页面是否是微信打开的示例(微信打开网页)
Apr 25 PHP
PHP多进程编程实例
Oct 15 PHP
PHP中通过trigger_error触发PHP错误示例
Jun 23 PHP
thinkPHP线上自动加载异常与修复方法实例分析
Dec 01 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
Nov 10 PHP
php微信开发之关键词回复功能
Jun 13 PHP
PHP通过文件路径获取文件名的实例代码
Oct 14 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
Jan 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服务器实现多session并发运行
2006/10/09 PHP
在MongoDB中模拟Auto Increment的php代码
2011/03/06 PHP
php session安全问题分析
2011/06/24 PHP
如何用PHP做到页面注册审核
2017/03/02 PHP
将CKfinder整合进CKEditor3.0的新方法
2010/01/10 Javascript
js滚动条回到顶部的代码
2011/12/06 Javascript
javascript中的parseInt和parseFloat区别
2013/07/12 Javascript
javascript通过className来获取元素的简单示例代码
2014/01/10 Javascript
基于JQuery实现的Select级联
2014/01/27 Javascript
Javascript中使用A标签获取当前目录的绝对路径方法
2015/03/02 Javascript
nodejs实现遍历文件夹并统计文件大小
2015/05/28 NodeJs
js实现仿爱微网两级导航菜单效果代码
2015/08/31 Javascript
js console.log打印对像与数组用法详解
2016/01/21 Javascript
AngularJS中的Directive实现延迟加载
2016/01/25 Javascript
jquery获取img的src值的简单实例
2016/05/17 Javascript
javascript对浅拷贝和深拷贝的详解
2016/10/14 Javascript
jquery与js实现全选功能的区别
2017/06/11 jQuery
浅谈node中的cluster集群
2018/06/02 Javascript
微信小程序实现tab页面切换功能
2018/07/13 Javascript
浅谈在vue-cli3项目中解决动态引入图片img404的问题
2020/08/04 Javascript
Python中使用PyHook监听鼠标和键盘事件实例
2014/07/18 Python
Python实现遍历windows所有窗口并输出窗口标题的方法
2015/03/13 Python
在Django的session中使用User对象的方法
2015/07/23 Python
Tensorflow中使用tfrecord方式读取数据的方法
2018/06/19 Python
pandas.DataFrame选取/排除特定行的方法
2018/07/03 Python
python调用opencv实现猫脸检测功能
2019/01/15 Python
win10环境下配置vscode python开发环境的教程详解
2019/10/16 Python
Tensorflow 多线程与多进程数据加载实例
2020/02/05 Python
windows下Pycharm安装opencv的多种方法
2020/03/05 Python
tensorflow2.0的函数签名与图结构(推荐)
2020/04/28 Python
Python Dataframe常见索引方式详解
2020/05/27 Python
Python 利用Entrez库筛选下载PubMed文献摘要的示例
2020/11/24 Python
HTML5 Canvas阴影使用方法实例演示
2013/08/02 HTML / CSS
纽约州一群才华横溢的金匠制作而成:Hearth Jewelry
2019/03/22 全球购物
2014年社区教育工作总结
2014/12/02 职场文书
股东出资协议书
2016/03/21 职场文书