为什么以下语句3的输出而不是1?
echo mb_strlen("鉑");
事情是那个
echo "鉑";
将正确输出此符号,该符号编码为UTF-8。
答案 0 :(得分:13)
确保设置正确的内部编码:
<?php
echo mb_internal_encoding() . '<br />';
echo mb_strlen('鉑', 'utf-8') . '<br />';
echo mb_strlen('鉑') . '<br />';
mb_internal_encoding('utf-8');
echo mb_internal_encoding() . '<br />';
echo mb_strlen('鉑') . '<br />';
// ISO-8859-1
// 1
// 3
// UTF-8
// 1
答案 1 :(得分:3)
您可能需要添加字符集:
echo mb_strlen("鉑","utf-8");
答案 2 :(得分:3)
将编码设置为mb_strlen函数:
echo mb_strlen("鉑", "UTF-8");
答案 3 :(得分:2)
如果您执行以下操作,您将获得正确的答案
echo mb_strlen("鉑", "UTF-8");
我猜php是默认的ASCII,它产生了3的答案。我还发现了一篇关于编码的非常有趣的文章,对任何对它为什么以及如何工作感兴趣的人来说都是如此。 http://www.joelonsoftware.com/articles/Unicode.html