如果在 PHP 中使用 mb_substr() 截取中文时出现乱码,通常是因为没有指定正确的字符编码。mb_substr() 需要指定合适的字符集来处理多字节字符(如中文)。常用的字符编码是 UTF-8,并且在使用多字节字符串函数时,指定字符编码非常重要。
<?php
$str = “这是一个中文字符串”;
$result = mb_substr($str, 0, 3, ‘UTF-8’); // 截取前3个字符,指定UTF-8编码
echo $result; // 输出 “这是一个”
?>
重要提示:
确保字符串的编码是 UTF-8:
如果字符串编码不是 UTF-8,即使在 mb_substr() 中指定了 UTF-8,也可能导致乱码。在此情况下,你可能需要先将字符串转换为 UTF-8 编码,可以使用 mb_convert_encoding() 函数进行编码转换:
<?php
$str = mb_convert_encoding($str, ‘UTF-8’, ‘auto’);
mb_internal_encoding():你可以使用 mb_internal_encoding(‘UTF-8’) 来设置 PHP 的默认多字节字符串函数使用 UTF-8 编码。这样可以避免每次都显式传递编码参数。