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

PHP中substr截取波斯语字符串出现乱码问号的问题求助

解决PHP中substr处理波斯语字符串出现乱码问号的问题

这问题我之前也碰到过!核心原因很简单:substr()是按字节来切割字符串的,但波斯语属于UTF-8编码的多字节字符,每个字符通常占2到4个字节。你写的substr($a,0,10)是截取前10个字节,这刚好把一个完整的波斯语字符劈成了不完整的片段,系统识别不了就显示成�了。

直接给你解决方案:用PHP的mb_substr()函数替代substr(),它专门用来处理多字节编码的字符串,是按字符数而不是字节数来截取的。

修改后的代码如下:

$a = 'حروف فارسی برای امتحان';
echo mb_substr($a, 0, 10);

额外提两个注意点:

  • 确保你的PHP环境启用了mbstring扩展(大部分服务器默认都开了,如果没开,去php.ini里把extension=mbstring这行注释去掉就行)。
  • 为了避免环境编码不一致的坑,最好显式指定编码参数,更稳妥:
echo mb_substr($a, 0, 10, 'UTF-8');

这样运行后就能得到前10个完整的波斯语字符,不会再出现乱码问号啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:59:00