我有一个字符串:$fullname = 'ワタナベサン';
一些行代码用于剪切条件的一部分:
if (strlen ( $fullname ) >= 14)
$this->FullName = substr ( $fullname, 0, 10 ) . '...';
else
$this->FullName = $fullname;
但结果显示为错误的字符串:'ワタナ�...'
。
答案 0 :(得分:1)
答案 1 :(得分:0)
substr
和所有其他核心PHP字符串函数不是多字节感知,并且无法正确处理多字节字符串。它们只能在ASCII字符串或其他单字节编码上正常工作。要正确操作多字节字符串,在大多数情况下,您需要使用MB extension中的等效函数。
有关详细信息,请参阅What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text。欢迎来到人物编码的兔子洞;你有很多东西需要学习。 :O)