wordpressのテーマtheme 「freesia empire」のトップページの抜粋部分の末尾にどうしても文字化けがする。

最初は抜粋の元となる記事の文字を調整してなんとか対策していました。

でもそれは一時的な対策でしかなく、記事の内容より文字数などを優先するわけにはいかないし。

抜本的に対策しよう!

PHPファイルをいじっった。修正したところは

substr → mb_substr

です。

場所は文字化けする部分のテンプレート内にある。

理由はsubstr関数は英語ベースの文字数を切り取る関数で、日本語に対応していないため、中途半端に切り取るから、最後の文字を半分に切ったら文字化けするわけです。

mb_substr関数はマルチバイト文字に則した文字数の数え方をしてくれるので、文字化けせずに表示されるようになるというわけです。