摘要:前言相信很多人在使用的过程中都遇到过生成文件乱码的情况,不论是使用还是写入。这就是为什么当文件没有时,你给用户呈现的文件就可能是乱码的原因了。方案那么如何在中输出呢答案是在所有内容输出之前输出当然,如果你是在生成文件,可能是下面两种
前言
相信很多人在使用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));
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/22295.html
摘要:而且下载的内容如果有中文字符的话还有乱码的现象。接下来就是介绍一下两个库可以解决我们的问题,一个是可以通过的数据去生成文件的内容,然后在,另外一个库则是用来把内容的编码转换为格式,这样一来就能够解决中文乱码的问题。 前言 之前有个项目中使用到了一个前端的download.js库,主要是用来拼接内容然后生成一个.txt或者.csv等文件让用户下载,不过目前这个库不支持了chrome和sa...
摘要:问题生成文件到目录下并下载,下载后发现文件乱码。解决这里我们只要在文件的开始输出头,告诉文件的编码方式,从而让打开时采用正确的编码。第一种在所有内容之前输出第二种也可以直接写入到文件最前端什么是参考百度百科链接 问题 生成CSV文件到/tmp目录下并下载,下载后发现文件乱码。 解决 这里我们只要在文件的开始输出BOM头,告诉windows CSV文件的编码方式,从而让Excel打开CS...
小编写这篇文章的主要目的,主要是讲解一下关于Python的一些知识,比如教大家怎么能够实时的去进行写入数据,提高工作的效率,关于其具体的代码,下面小编给大家详细解答下。 之前在做数据分析的时候,我们需要处理大量高并发的数据,比如对新的数据去进行处理,那么,怎么处理呢?下面给大家进行一个详细的解答。 1:实时向csv文件写入数据 假设需要生成一张csv表,里面的字段对应一些数据,由于后续的...
摘要:出于安全考虑,无法直接调用写文件到磁盘,但是却可以通过下载来变相实现保存功能。生成文件并下载是一种逗号分隔的表格文件格式,可以很好的被支持,由于其文件格式简单,所以经常用在简单的表格上面。 出于安全考虑,JS无法直接调用FileAPI写文件到磁盘,但是却可以通过下载来变相实现保存功能。JS要实现下载功能,一般都是这么几个过程:生成下载的URL,动态创建一个A标签,并将其href指向生成...
阅读 1399·2021-09-28 09:44
阅读 2480·2021-09-28 09:36
阅读 1027·2021-09-08 09:35
阅读 1966·2019-08-29 13:50
阅读 790·2019-08-29 13:29
阅读 1104·2019-08-29 13:15
阅读 1705·2019-08-29 13:00
阅读 2954·2019-08-26 16:16