2013年3月17日日曜日

文字数とバイト数のカウント

「PHPのマルチバイト文字は2バイトではありません。
マニュアルにも2バイトとは明記していません。」

(; ・`д・´) な、なんだってー!! (`・д´・ ;)

じゃあ何バイトなのかといいますとこれは文字コードに依存します。

例えば、「aaaあああ」は

mb_strlen:6
strlen(UTF-8):12
strlen(EUC-JP):9

となります。

文字数を取得するだけならばmb_strlenで解決するのですが、
バイト数で取得して欲しいという注文を受けることもあるかと思います。

そんな時に正直にstrlenを用いることはできません。
なぜなら、環境によってはstrlenがmb_strlenにオーバーロードされていることがあるためです。

ネットで調べた結果、この方法で安定してバイト数を出せるようです。 また、マルチバイト文字を2バイトとして数えたい場合は
文字列をSJIS-winに変換してから数える方法もあります。 機種依存文字の変換にいささか不安は残りますが、今回はこのあたりで閉めたいと思います。

0 件のコメント:

コメントを投稿