echo mb_strlen($s,"gbk");3 も理解できますか?"/> echo mb_strlen($s,"gbk");3 も理解できますか?">

ホームページ >バックエンド開発 >PHPチュートリアル >gbk エンコードの戻り結果が 3 になるのはなぜですか?

gbk エンコードの戻り結果が 3 になるのはなぜですか?

WBOY
WBOYオリジナル
2016-08-22 11:45:371305ブラウズ

php > $s="Hello";
php > echo mb_strlen($s,"utf8");
2
utf8 は 2 を返します
php >
4
これは4を返します、私も理解しています
php > echo mb_strlen($s,"gbk");
3
ここが理解できませんか?

返信内容:

php > $s="Hello";
php > echo mb_strlen($s,"utf8");
2
utf8 は 2 を返します
php >
4
これは4を返します、私も理解しています
php > echo mb_strlen($s,"gbk");
3
ここが理解できませんか?

$s は UTF8 でエンコードされているため、GBK に変換せずに GBK エンコードを通じてその長さを取得できます。

UTF8 エンコード你好在GBK上是浣犲ソ なので、長さは 3 です。

これがあなたがすべきことです:

リーリー

つまり、GB2312も間違っています。

mb_strlen は返される文字数なので、2 を返すだけが正しいのですか。4 と 3 の 2 つのケースをどのように理解すればよいでしょうか。

ただし、 $s = "你好" 的时候,$s は UTF8 でエンコードされた文字列を格納します (ソース ファイルのエンコードに応じて) GBK または GB2312 を使用してこのエンコードされたデータをデコードすると文字化けが発生する可能性があるため、4 と 3 は文字化けの長さにする必要があります。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。