このタイトルを書いて、あのことだなとご想像がつく方も多いと思いますが、まさにその通りのお話になります。

UTF-8の環境にて、PHPのstrlen関数で文字列のカウントをすると、全角文字が2バイトではなく1から6バイトとしてカウントされるというお話です。

この開発日誌を読み直してみたところ、1年前くらいにサイトの文字コードをSJISからUTF-8に変えていたので、この間あちこちに不具合があったのだろうと思うと恐縮するばかりです。

対処方法ですが、こちらに解説付きでまとめられてますので、詳しくはリンク先をご確認頂きたいと思いますが、要はstrlen()を使う時には文字コードをSJISに強引に変えてしまえということです。

strlen(mb_convert_encoding($text,"SJIS","UTF-8"))

放ったらかしの画像掲示板を少々手入れした際、文字カウントがどうもおかしい….と思って気が付いたのですが、なんともお恥ずかしいお話です。

imgbbs_201109.gif
当時の画像掲示板の泉イメージ

その放ったらかしだった画像掲示板ですが、ホントに少々ではありますが書き込みいただいていたようですので、せっかくですからサブドメイン化をして、ディレクトリと分けた別サイトに仕立ててみました。

これに合わせてデザインも少々変え、サイト名も画像掲示板の泉としてあります。見よう見まねで作った掲示板プログラムですので、まだまだ不具合が多いとは思いますが、よろしければご利用下さい。

スポンサーリンク