我从数据库中提取外来(日语)字符,并使用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