为什么下面语句的输出是 3 而不是 1?
echo mb_strlen("鉑");
事情是这样的
echo "鉑";
将正确输出编码为 UTF-8 的符号。
为什么下面语句的输出是 3 而不是 1?
echo mb_strlen("鉑");
事情是这样的
echo "鉑";
将正确输出编码为 UTF-8 的符号。
确保设置正确的内部编码:
<?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
您可能需要添加字符集:
echo mb_strlen("鉑","utf-8");
将编码设置为您的 mb_strlen 函数:
echo mb_strlen("鉑", "UTF-8");
如果您执行以下操作,您将得到正确答案
echo mb_strlen("鉑", "UTF-8");
我猜 php 默认为 ASCII,它产生的答案为 3。我还发现了一篇非常有趣的关于 Encoding 的文章,供任何对它的工作原理和方式感兴趣的人使用。 http://www.joelonsoftware.com/articles/Unicode.html