php写入txt乱码的解决方法

 更新时间:2019年09月17日 14:50:18   投稿:laozhang  
在本篇文章里小编给大家分享的是关于php写入txt乱码的知识点以及解决方法,有需要的朋友们参考下。

相信很多人在使用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判断IP地址是否在多个IP段内

    php判断IP地址是否在多个IP段内

    这篇文章主要为大家详细介绍了php判断IP地址是否在多个IP段内,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • php自动适应范围的分页代码

    php自动适应范围的分页代码

    分享一个自己写的“页码自动适应范围”的分页代码
    2008-08-08
  • PHP中source #N问题的解决方法

    PHP中source #N问题的解决方法

    最近写PHP里面的查询经常会遇到source #4或者source#5这样的问题,下面有个不错的解决方法,大家可以尝试下
    2014-01-01
  • PHP终止脚本执行的实例代码

    PHP终止脚本执行的实例代码

    在本篇文章里小编给大家整理的是关于PHP终止脚本执行的实例代码,需要的朋友们可以学习参考下。
    2020-03-03
  • 如何用RabbitMQ和Swoole实现一个异步任务系统

    如何用RabbitMQ和Swoole实现一个异步任务系统

    从最开始的使用redis实现的单进程消费的异步任务系统到加入swoole的多进程消费模式,现在,我们的异步任务系统终于又能迈进一步。这回基于RabbitMQ的异步任务系统设计的的更加完善,包括多进程消费,异常重试等。
    2021-05-05
  • PHP 开发环境配置(Zend Studio)

    PHP 开发环境配置(Zend Studio)

    运行Zend Studio安装文件(ZendStudio-7.1.2.exe) 安装选项请按照图片中我的选择。
    2010-04-04
  • PHP7 新特性详细介绍

    PHP7 新特性详细介绍

    本文主要介绍PHP7 新特性的资料,这里整理了详细的资料及简单实现代码帮助大家学习参考新特性的知识,有兴趣的朋友可以参考下
    2016-09-09
  • 实例解析php的数据类型

    实例解析php的数据类型

    在本篇文章中我们给大家分享了关于php的数据类型相关知识点内容,有需要的朋友们参考学习下。
    2018-10-10
  • PHP使用观察者模式处理异常信息的方法详解

    PHP使用观察者模式处理异常信息的方法详解

    这篇文章主要介绍了PHP使用观察者模式处理异常信息的方法,结合实例形式详细分析了php观察者模式处理异常信息相关原理、实现方法及操作注意事项,需要的朋友可以参考下
    2019-09-09
  • php使用socket调用http和smtp协议实例小结

    php使用socket调用http和smtp协议实例小结

    这篇文章主要介绍了php使用socket调用http和smtp协议,结合实例形式总结分析了php使用socket发送http请求、post请求、SMTP请求、邮件发送等相关操作技巧,需要的朋友可以参考下
    2019-07-07

最新评论