mb_substr函数中文乱码

$content = "我爱你中文abc12中文";
$message = mb_substr(strip_tags($content), 0, 9,"utf-8");
$intro = mb_convert_encoding($message, 'UTF-8', 'UTF-8,GBK,GB2312');

在项目中本地截取正常,上传到服务器出现截取乱码,搞了半天,总结一下:

一: 

mb_substr() 函数返回字符串的一部分,之前我们学过 substr() 函数,它只针对英文字符,如果要分割的中文文字则需要使用 mb_substr()。

注释:如果 start 参数是负数且 length 小于或等于 start,则 length 为 0。

二: 

通过测试发现 mb_substr()函数对存在中文和英文的字符串编码使用过后会出现乱码,原因有可能是 中文占三个字符,英文占一个字符,因为当我  设置   $content = "我爱你中文"  或者 $content = "我爱你中文a1v" ,也就是全是中文或者包含三个英文的倍数的时候乱码消失,所以问题应该出在这里 ;

三:解决方法:  在后面加个utf-8,表示编码全部用utf-8

$content = "我爱你中文abc12中文";
$message = mb_substr($content =, 0, 9,"utf-8");

猜你喜欢

转载自blog.csdn.net/qq_38526952/article/details/105251591