V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MrMike
V2EX  ›  PHP

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

  •  
  •   MrMike · 2017-05-19 09:48:37 +08:00 · 3902 次点击
    这是一个创建于 2752 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    mb_convert_encoding 函数
    MrMike
        10
    MrMike  
    OP
       2017-05-19 10:57:40 +08:00
    @lianyue 谢谢,稍后空了试试。
    ccc008
        11
    ccc008  
       2017-05-19 11:15:38 +08:00
    @MrMike 在 csv 头部写入 utf8 bom
    cxbig
        12
    cxbig  
       2017-05-19 17:59:22 +08:00
    Windows 下转存 CSV 的工作量大么?如果不大,建议使用 LibreOffice 来做。
    我司以前也有类似问题,用 Windows 的同事改用 LibreOffice 处理 CSV 以后就没事了。
    MrMike
        13
    MrMike  
    OP
       2017-05-21 13:28:10 +08:00
    @cxbig 经常会有数据转换,每次的数据量都不等,几百到几千上万都有。只有让同事这样多操作两次了。谢了哈。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2221 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 01:28 · PVG 09:28 · LAX 17:28 · JFK 20:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.