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 新手入门教程
Aug 03 PHP
PHP 递归效率分析
Nov 24 PHP
PHP简洁函数小结
Aug 12 PHP
深入PHP5中的魔术方法详解
Jun 17 PHP
解析php取整的几种方式
Jun 25 PHP
php检测网页是否被百度收录的函数代码
Oct 09 PHP
递归删除一个节点以及该节点下的所有节点示例
Mar 19 PHP
PHP实现搜索相似图片
Sep 22 PHP
php语言的7种基本的排序方法
Dec 28 PHP
POST一个JSON格式的数据给Restful服务实例详解
Apr 07 PHP
PHP实现的堆排序算法详解
Aug 17 PHP
PHP调用API接口实现天气查询功能的示例
Sep 21 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(2)――PHP类型
2010/02/15 PHP
php学习之简单计算器实现代码
2011/06/09 PHP
浅析php单例模式
2014/11/25 PHP
PHP获取对象属性的三种方法实例分析
2019/01/03 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
jQuery1.6 使用方法二
2011/11/23 Javascript
验证手机号码的JS方法分享
2013/09/10 Javascript
什么是Node.js?Node.js详细介绍
2014/06/01 Javascript
jQuery中appendTo()方法用法实例
2015/01/08 Javascript
setinterval()与clearInterval()JS函数的调用方法
2015/01/21 Javascript
js实现文字超出部分用省略号代替实例代码
2016/09/01 Javascript
原生js实现类似fullpage的单页/全屏滚动
2017/01/22 Javascript
微信小程序网络请求的封装与填坑之路
2017/04/01 Javascript
angularjs定时任务的设置与清除示例
2017/06/02 Javascript
详解webpack和webpack-simple中如何引入css文件
2017/06/28 Javascript
jquery插件开发之选项卡制作详解
2017/08/30 jQuery
jquery分页插件pagination使用教程
2018/10/23 jQuery
Vue.js 图标选择组件实践详解
2018/12/03 Javascript
使用JQuery自动完成插件Auto Complete详解
2019/06/18 jQuery
ES6之Proxy的get方法详解
2019/10/11 Javascript
vue倒计时刷新页面不会从头开始的解决方法
2020/03/03 Javascript
基于jQuery拖拽事件的封装
2020/11/29 jQuery
JS+JQuery实现无缝连接轮播图
2020/12/30 jQuery
对python中xlsx,csv以及json文件的相互转化方法详解
2018/12/25 Python
Python两个字典键同值相加的几种方法
2019/03/05 Python
使用Python快乐学数学Github万星神器Manim简介
2019/08/07 Python
pytorch中torch.max和Tensor.view函数用法详解
2020/01/03 Python
Tensorflow 实现将图像与标签数据转化为tfRecord文件
2020/02/17 Python
CSS伪类与CSS伪元素的区别及由来具体说明
2012/12/07 HTML / CSS
Skyscanner阿联酋:全球领先的旅游搜索平台
2017/11/25 全球购物
幼儿园小班家长评语
2014/12/30 职场文书
大学生活感想
2015/08/10 职场文书
原生Js 实现的简单无缝滚动轮播图的示例代码
2021/05/10 Javascript
python实现剪贴板的操作
2021/07/01 Python
Vue中使用import进行路由懒加载的原理分析
2022/04/01 Vue.js
基于Python实现股票收益率分析
2022/04/02 Python