substr()外国字符给了我黑色的钻石和白色的问号


substr() foreign characters gives me black diamonds with white questions marks

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

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

所有内容(文档、字符集、表编码)都设置为UTF-8。

下面是的一个例子

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

哪些输出日本最�

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

在处理UTF strigs时不能使用substr(),因为那里的每个符号都将表示为多个字节,而不是单个字节(对于非ASCII字符)。并且substr()字节一起工作。相反,您应该使用mb_substr(),它将安全且正确地返回所需的结果。

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

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

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