如何解决 PHP 用 fgetcsv 读取 csv 中文字符为乱码的问题?

2017-05-19 09:48:37 +08:00
 MrMike

csv 是在 windows 下转换的,保存的代码也是 utf-8 的,但是读取的时候,中文全部是乱码,如果 excel 是在 mac 下用 number 转换的 csv(utf8),读取就是正常的。 程序是运行在 centos 7 下面的。

3754 次点击
所在节点    PHP
13 条回复
z5864703
2017-05-19 10:06:47 +08:00
读出来的数据进行编码转换下就好了,先检测确认啥编码
rxzxf1993
2017-05-19 10:21:50 +08:00
你 Windows 下创建的 csv 估计不是 utf8
gouchaoer
2017-05-19 10:24:39 +08:00
php 字符串没有编码是纯 c 字符串,是无法感受编码的,试试不要保存成 utf-8 而是 ansic 试试
5dkgansm
2017-05-19 10:38:02 +08:00
csv 用 excel 或者 wps 保存默认编码是 gbk 还是 gb2312 来着,可以 iconv 转一下。
JKeita
2017-05-19 10:47:36 +08:00
用文本编辑器打开会乱码吗,还是只有 excel2003 会乱码,csv 最好用 gbk 格式
MrMike
2017-05-19 10:51:28 +08:00
@rxzxf1993 在 excel 里面,是选择了 utf8 的。查了半天,最后还是算了。现在采用的是先导出 csv,然后用记事本再另存为 utf8 的编码。。步骤是麻烦了点。。
MrMike
2017-05-19 10:52:11 +08:00
@JKeita 记事本不会,所以又通过记事本再另存为 utf8,乱码问题暂时解决了。
MrMike
2017-05-19 10:53:00 +08:00
@5dkgansm 保存的时候选择的是 utf8,但是读取就是乱码。现在用记事本解决了。
lianyue
2017-05-19 10:53:56 +08:00
PHP 有编码转换的函数 读一行 转一行就好了

mb_convert_encoding 函数
MrMike
2017-05-19 10:57:40 +08:00
@lianyue 谢谢,稍后空了试试。
ccc008
2017-05-19 11:15:38 +08:00
@MrMike 在 csv 头部写入 utf8 bom
cxbig
2017-05-19 17:59:22 +08:00
Windows 下转存 CSV 的工作量大么?如果不大,建议使用 LibreOffice 来做。
我司以前也有类似问题,用 Windows 的同事改用 LibreOffice 处理 CSV 以后就没事了。
MrMike
2017-05-21 13:28:10 +08:00
@cxbig 经常会有数据转换,每次的数据量都不等,几百到几千上万都有。只有让同事这样多操作两次了。谢了哈。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/362372

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX