在其他环境下跑同样的代码,结果又是正常的: https://3v4l.org/OMDeo
本地环境是:7.3.12 ZTS
1
littleylv 2020-04-08 16:29:24 +08:00 3
pathinfo() is locale aware, so for it to parse a path containing multibyte characters correctly, the matching locale must be set using the setlocale() function.
来源: https://www.php.net/manual/zh/function.pathinfo.php#refsect1-function.pathinfo-notes |
2
encro 2020-04-08 19:30:16 +08:00
评论里有:
Note: pathinfo() is locale aware, so for it to parse a path containing multibyte characters correctly, the matching locale must be set using the setlocale() function. Reality: var_dump(pathinfo('中国人 2016.xls')); exit(); array(4) { 'dirname' => string(1) "." 'basename' => string(8) "2016.xls" 'extension' => string(3) "xls" 'filename' => string(4) "2016" } Expect(Solve): setlocale(LC_ALL, 'zh_CN.UTF-8'); var_dump(pathinfo('中国人 2016.xls')); exit(); array(4) { 'dirname' => string(1) "." 'basename' => string(17) "中国人 2016.xls" 'extension' => string(3) "xls" 'filename' => string(13) "中国人 2016" } |
3
s609926202 OP |
4
LiSkyAir 2020-04-14 16:23:25 +08:00
@s609926202
在 PHP 手册 https://www.php.net/manual/zh/function.setlocale.php#refsect1-function.setlocale-parameters 里边是有说明的 > **Note**: > 在 Windows 中,setlocale(LC_ALL, '')要从系统中的区域 /语言设置(通过控制面板访问) 。 你如果用的是 Windows 10 的话可以通过 `控制面板 > 时钟和区域 > 更改日期、时间或数字格式 > 管理 > 更改系统区域设置` 勾选 `Beta 版: 使用 Unicode UTF-8 提供全球语言支持` 来解决这个问题 |
5
s609926202 OP @LiSkyAir 赞,这隐秘的配置
|