ChatGPTとしゃべる毎日

ChatGPTとのやり取りで面白かったものをまとめています

mb_strlenでハマった

macphpの開発をしているのですが、

「判断」をmb_strlenすると6と出ていました。

PHP TIPS - 21. mb_strlen()関数の落とし穴:ITpro

上記の記事を読むと、php内部のエンコードと文字列のエンコードと異なってる場合に起きるらしいです。

今回は「判断」の文字列はutf8、php.iniの

mbstring.internal_encodingはEUCJPだったのでこんなことになったようです。

ついでに言うとphp.iniも作ってませんでした。

なのでmac

/etc/php.ini.defaultからコピーしてきて

/etc/php.iniを作成し、internal_encodingと、defaultcharasetをコメントアウトを外して保存し、ちゃんと2と出ることを確認しました。

(コマンドラインphpはアパッチ再起動必要ありません)