我正在使用mb_substr
函数对带有变音符号的 unicode 字符串进行切片,但它可以像使用简单substr
函数一样工作。它将 unicode 字符分成两半,显示问题标记的菱形。
例如
echo mb_substr('ááááá', 0, 5); //Displays áá�
可能有什么问题?
如果我没有将编码指定为 的最后一个参数,我也会遇到同样的问题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
参数是字符编码。如果省略,将使用内部字符编码值。
我有同样的问题,上面的答案也帮助了我。除了设置php.ini
或使用之外ini_set()
,使用mb_internal_encoding('utf-8');
(utf-8
可以根据您的选择替换)为多字节函数设置永久编码也可能会有所帮助。