csv中文乱码怎么解决(csv打开中文乱码怎么解决)

什么是CSV文件?

英文名:Comma Separator Value(逗号分隔值),常用来数据转换的中间文件存在,比如:从Mysql中导出数据到CSV中。在web系统中经常遇到要导出报表数据,也会用到csv格式,使用utf-8编码导出CSV文件,打开后里边的中文成了乱码 (Windows下CSV文件默认与Microsoft Excel关联),用文本编辑器打开正常,不过排版很乱。原因:缺少BOM,又是微软画蛇添足。

什么是BOM?

Byte Order Mark(比特序标记),微软定义的一种头部结构。

为了识别 Unicode 文件,Microsoft 建议所有的 Unicode 文件应该以 ZERO WIDTH NOBREAK SPACE字符开头。这作为一个”特征符”或”字节顺序标记(byte-order mark,BOM)”来识别文件中使用的编码和字节顺序(big-endian或little-endian),具体的对应关系见下表。

Bytes Encoding Form

00 00 FE FF UTF-32, big-endian

FF FE 00 00 UTF-32, little-endian

FE FF UTF-16, big-endian

FF FE UTF-16, little-endian

EF BB BF UTF-8

类Unix系统中并没有使用 BOM,因为它会破坏现有的 ASCII 文件的语法约定。

我们在使用PHP导出csv文件时, 如果只使用file_put_contents 或者 fwrite 写入了表格数据, 而我们生成csv的平台不一定遵循微软的bom协议,导致如果输出非unicode编码的csv文件(例如utf-8),并且没有生成bom信息的话,Excel自动按照unicode编码读取,就会出现乱码问题了。而没有写入BOM头信息,就会出现打开中文乱码的情况。

PHP中文乱码解决

Excel在读取csv的时候是通过读取文件头上的bom来识别编码的,如果文件头无bom信息,则默认按照unicode编码读取。

如果想使用utf-8格式,确保php源码是utf-8,我们可以在第一行写入utf-8对应的BOM信息

代码如下:

$bom = pack('CCC', 0xef, 0xbb, 0xbf); // 和上面的对应

file_put_contents('pythontab.csv',$bom, FILE_APPEND);

file_put_contents('pythontab.csv',$someData, FILE_APPEND); //写入你想要写入表格的数据

前后都省略了部分代码, 只写了最关键的部分, 其它部分大家自行补充即可。

这样生成的csv就不会出现中文乱码问题啦。

注意:写入的BOM头信息要和文件的编码对应。

本文来自“等夏天等秋天”用户投稿,该文观点仅代表作者本人,不代表华夏信息网立场,本站不对文章中的任何观点负责,内容版权归原作者所有、内容只用于提供信息阅读,无任何商业用途。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站(文章、内容、图片、音频、视频)有涉嫌抄袭侵权/违法违规的内容,请发送邮件至1470280261#qq.com举报,一经查实,本站将立刻删除、维护您的正当权益。如若转载,请注明出处:http://www.xxxwhg.com/ls/86239.html

上一篇 2023-04-14 17:07:08
下一篇 2023-04-14 19:17:29

相关推荐

  • 魅族20pro信号怎么样(魅族20Pro手机怎么样)

    魅族17信号差解决办法1、更换目前所处环境,部分地区因网络覆盖问题可能会出现信号弱的问题。2、4G网络上网时,如果有电话打进来,则手机端会切回到2G/3G网络,切回过程中可能会出现信号弱问题。3、剪卡,SIM卡破损或者脏污也可能导致这种情况,您也可以尝试更换一张原装小卡

    2023-05-09 16:49:56
    289
  • 苹果显示sim卡故障解决办法我,苹果显示sim卡故障解决办法

    不知道大家有没有看过网上这样一个段子,如果你用ipone没吐槽过信号,那你用的就是ipone。虽然从iPhone12开始苹果公司就更换了高通基带,但是效果好像不是特别显著,信号依然不给力,很多小伙伴们表示信号差就算了,已经习惯了,但是还经常出现“无SIM卡、“未安装SIM卡”或者

    2023-01-02 10:30:04
    339
  • 盗版win7黑屏解决办法7601,盗版win7黑屏解决办法超过3次

    盗版win7黑屏解决办法有:1.在Windows系统的官网下载一个正版系统;2.在网上搜索该盗版win7激活所需要用到的补丁程序;3.将电脑送到正规售后维修处寻求专业人员的帮助。

    2022-10-17 13:52:03
    196
  • 电脑模拟器打开软件闪退(电脑打开雷电模拟器软件特别卡)

    电脑闪退的因素很多,除了跟用户自身操作失误有关外,也和电脑软硬件有很大关系,例如病毒、木马程序的破坏,使用了测试版和盗版软件,软件本身存在bug,软件和系统版本不兼容,驱动尤其是显卡驱动出错,电脑配置太低,系统长时间使用积累的大量注册表错误等等。 出现软件闪退

    2023-04-24 12:58:12
    300