3

我正在使用mb_substr函数对带有变音符号的 unicode 字符串进行切片,但它可以像使用简单substr函数一样工作。它将 unicode 字符分成两半,显示问题标记的菱形。

例如

echo mb_substr('ááááá', 0, 5); //Displays áá�

可能有什么问题?

4

2 回答 2

7

如果我没有将编码指定为 的最后一个参数,我也会遇到同样的问题mb_substr:至少在我的服务器上,它默认为ISO-8859-1.


但是,如果我将编码正确设置为UTF-8,它可以正常工作:

echo mb_substr('ááááá', 0, 5, 'UTF-8');

在浏览器中获得正确的显示:

ááááá


(引用,强调我的)mb_substr

string mb_substr  ( string $str  , int $start  [, 
    int $length  [, string $encoding  ]] )

encoding参数是字符编码。如果省略,将使用内部字符编码值

于 2010-01-15T12:00:58.647 回答
1

我有同样的问题,上面的答案也帮助了我。除了设置php.ini或使用之外ini_set(),使用mb_internal_encoding('utf-8');utf-8可以根据您的选择替换)为多字节函数设置永久编码也可能会有所帮助。

于 2012-09-27T22:01:31.173 回答