(铂)字符串函数和php中的UTF8

时间:2011-04-22 22:00:14

标签: php utf-8 internationalization multibyte

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

echo mb_strlen("鉑");

事情是那个

echo "鉑";

将正确输出此符号,该符号编码为UTF-8。

4 个答案:

答案 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