basename fix无法捕捉中文文件名

场景

excel导出统计文件的功能,文件名是还有中文, 排查代码 发现在fileDownload的时候,basename只是
索取到了非中文的部分

分析

官方手册 https://secure.php.net/manual/zh/function.basename.php

basename() is locale aware, so for it to see the correct basename with multibyte character paths, the matching locale must be set using the setlocale() function.
不同的编码方式是会对结果造成不同的影响, 所以需要设置本地化或者自己实现

解决

  • 本地化设置
    • setlocale(LC_ALL, ‘zh_CN.GBK’); // windows
    • setlocale(LC_ALL, ‘zh_CN.UTF8’); // linux
  • 自己实现(官方文档的推荐表)
    • end(explode(‘/’,$file_name));
$file_name = '/home/data/www/liusen/bmp-mgmt.dianhua.cn/cache/邦秒配总计详情文档-20180618-20180718.xlsx';
setlocale(LC_ALL, 'zh_CN.GBK'); // windows
echo basename($filename) . PHP_EOL;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值