6

为什么下面语句的输出是 3 而不是 1?

echo mb_strlen("鉑");

事情是这样的

echo "鉑";

将正确输出编码为 UTF-8 的符号。

4

4 回答 4

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
于 2011-04-22T22:07:04.353 回答
3

您可能需要添加字符集:

  echo mb_strlen("鉑","utf-8");
于 2011-04-22T22:04:51.373 回答
3

将编码设置为您的 mb_strlen 函数:

echo mb_strlen("鉑", "UTF-8");
于 2011-04-22T22:05:09.223 回答
2

如果您执行以下操作,您将得到正确答案

echo mb_strlen("鉑", "UTF-8");

我猜 php 默认为 ASCII,它产生的答案为 3。我还发现了一篇非常有趣的关于 Encoding 的文章,供任何对它的工作原理和方式感兴趣的人使用。 http://www.joelonsoftware.com/articles/Unicode.html

于 2011-04-22T22:05:38.987 回答