ホームページ > バックエンド開発 > PHPチュートリアル > mb_strlen に関する初心者の質問

mb_strlen に関する初心者の質問

WBOY
リリース: 2016-06-13 13:15:04
オリジナル
923 人が閲覧しました

mb_strlen についての初心者の質問です。
これら 3 つの呼び出しの戻り値がよくわかりません。 。

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
<?php
echo mb_strlen("我的名字") . "<br/>"; //12
echo mb_strlen("我的名字","UTF-8") . "<br/>"; //4
echo mb_strlen("我的名字","GBK") //6
?>
ログイン後にコピー


コードは l.php に保存され、ファイルエンコーディングは utf8 です

の 2 番目のエンコーディングパラメータについてmb_strlen。 PHP のマニュアルには次のように書かれています。

「エンコーディングパラメータは文字エンコーディングです。省略した場合は、内部の文字エンコーディングの値が使用されます。」
エンコーディングがどの内部文字エンコーディングを指すのか知りたいです。 、どこで設定されていますか。

また、この関数の戻り値は次のように書きます。
「文字エンコーディングencoding を持つ文字列 str の文字数を返します。マルチバイト文字は 1 としてカウントされます。」
Multi -byte文字は1としてカウントされます。
では、なぜ最初の呼び出しでは 12 が返され、2 番目の呼び出しでは実際には 6 が返されるのでしょうか? 。 よくわかりません。説明していただけると幸いです、ありがとうございます。

-----解決策--------------------------
ディスカッション
そうそう、別の小さな問題があります。 PHP で他の DLL の関数を使用したい場合は、DLL を system32 にコピーしてから、php.ini に
extension=php_fdf.dll のようなコードを追加する必要がありますか?

------解決策---------
PHP コード

echo mb_strlen("私の名前") . "<br/>";
echo mb_strlen("私の名前","UTF-8") "<br/>";
echo mb_strlen("私の名前","GBK") //6
<br><font color="#e78608">------解決策------------------</font><br>
まず、ファイルのエンコーディングは utf-8 である必要があり、mb_internal_encoding は ISO-8859-1<br> に似ている必要があります。次に、utf8 の漢字は 3 バイト、gb は 2 バイトであり、mb_strlen は変換することを知っておく必要があります。マルチバイト文字は 1 としてカウントされるため、 <br><?php<br>echo mb_strlen("my name") になります。 // に従って、エンコードは指定されません。デフォルト ISO-8859- 1 計算、1 つの utf8 中国語文字は 3<br>echo mb_strlen("my name","UTF-8") "<br/>";文字は 1<br> echo mb_strlen("My name","GBK") //エンコーディングが間違っていると、GBK 内の 1 つの中国語文字は 2 としてカウントされますが、ファイルは utf8 なので、4 * 3 = 12 バイトになります/ 2 = 6 gbk 文字<br>?><div class="clear"></div>
ログイン後にコピー
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート