php重命名utf8,PHP重命名失败,文件名带有utf-8阿拉伯字符集字符串

我的php重命名功能有问题,如果文件名用阿拉伯语单词带空格,它将失败.

例如

rename(temp/أم كلثوم ثوار - ثوار.mp3,audio/13408831061.mp3);

(路径)中没有这样的文件或目录

请注意:أمكلثومxxxxxxxxثوار-ثوار.mp3

xxxxxxx这里至少有六个空格.

我尝试了urlencode(),但仍然没有结果.

有任何建议!

解决方法:

要检查$file_id是否正确,请在类似Unix的系统上执行以下操作:

echo "

\n"; // for HTML output only

system("echo -n '$file_id' | od -tx1");

使用此值,它应该是您报告的文件名(您可以执行回显检查)

$file_id = "\xD9\x83\xD9\x84\xD8\xAB\xD9\x88\xD9\x85 \xD8\xAB\xD9\x88\xD8\xA7\xD8\xB1 - \xD8\xAB\xD9\x88\xD8\xA7\xD8\xB1.mp3";

输出是

0000000 d9 83 d9 84 d8 ab d9 88 d9 85 20 d8 ab d9 88 d8

0000020 a7 d8 b1 20 2d 20 d8 ab d9 88 d8 a7 d8 b1 2e 6d

0000040 70 33

0000042

(如您所见,以B1结尾的序列会重复自己,最后4个字节是.mp3)

在文件应存放的目录中,您可以发出一个

ls -1 | od -tx1

您会看到所有文件名以0a分隔,它们是换行符.

如果两个输出都匹配,则问题可能出在PHP或系统中(两者均不太可能),如果不匹配,则您将不得不从编码开始在代码中追逐该问题,编码必须在各处都是UTF-8.

标签:php,rename

来源: https://codeday.me/bug/20191009/1879302.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值