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