substr()外来字符给我带有白色问号的黑色钻石

时间:2013-11-26 10:12:19

标签: php html unicode utf-8 character-encoding

我从数据库中获取外来(日语)字符,并使用substr()来限制字符串的长度。

然而,当我这样做时,它会从字符串中删除一个字符,并留下黑色钻石中的一个问号作为替换字符( )

Everything(Documents,Charset,table encoding)设置为UTF-8。

以下是发生的事情的一个例子

$string = "日本最大級のポータルサイト。"
echo substr($string, 0,10); 

哪个输出日本最

你如何推荐我找到/替换这个问号图标?

2 个答案:

答案 0 :(得分:4)

在处理UTF-strigs时不能使用substr(),因为那里的每个符号将表示为多个字节,而不是单字节(对于非ASCII字符)。 substr()适用于字节。相反,你应该使用mb_substr()来安全地纠正返回所需的结果。

要在PHP中使用多字节字符串,有mbstring扩展名,mb_substr()是其中的一部分。

答案 1 :(得分:0)

只要在服务器上启用了mb_substr(),就应该使用它。

http://php.net/manual/en/book.mbstring.php