You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP str_getcsv解析中文CSV失败问题排查与解决建议

Laravel 6功能测试中str_getcsv解析含中文CSV失败的问题及解决办法

问题描述

在Laravel 6编写功能测试时,遇到str_getcsv函数解析含中文的CSV内容失败的问题。执行测试代码:

str_getcsv("\"未定义\",\"良品\",\"二手\",\"瑕疵\",\"良品无吊牌\"")

通过var_dump查看结果时,发现拆分异常,例如“良品,二手”被合并为单个字符串。

无效尝试

  • 在index.php中设置setlocale(LC_ALL, 'zh_CN.UTF-8')或setlocale(LC_ALL, 'zh_CN.UTF8'),该设置在API请求场景下正常生效,但在PHPUnit功能测试中无效。

解决办法

  • 升级至PHP 8版本可直接解决此错误;
  • 若必须使用PHP7,可设置setlocale(LC_ALL, 'Chinese_China.65001'),此方案来自PHP官方Bug报告。

PHP版本测试结果

解析正常的版本

  • PHP 8.1.8(两个编译版本)
  • PHP 8.0.20
  • PHP 7.2.33

解析异常的版本

  • PHP 7.2.34
  • PHP 7.4.30

致谢与参考

感谢@jspit和@Álvaro-gonzález的帮助,相关逻辑可参考Laravel框架中Illuminate\Validation\ValidationRuleParser.php文件的275-285行代码。


内容的提问来源于stack exchange,提问作者UioSun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 05:05:22