次のステートメントの出力が 1 ではなく 3 になるのはなぜですか?
echo mb_strlen("鉑");
事はそれです
echo "鉑";
UTF-8 としてエンコードされたこの記号を適切に出力します。
次のステートメントの出力が 1 ではなく 3 になるのはなぜですか?
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 の答えを生成します。エンコーディングがなぜ、どのように機能するのかに興味のある人のために、エンコーディングに関する非常に興味深い記事も見つけました。 http://www.joelonsoftware.com/articles/Unicode.html