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

Raf*_*ael 6 php utf-8 internationalization multibyte

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

echo mb_strlen("?");
Run Code Online (Sandbox Code Playgroud)

事情就是这样

echo "?";
Run Code Online (Sandbox Code Playgroud)

将正确输出这个编码为UTF-8的符号.

Phi*_*ber 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
Run Code Online (Sandbox Code Playgroud)