wp.Vicuna.exc WordPress 2.8.x カレンダ日本語文字化け修正(てきとー)

WordPress のテーマとして、wp.Vicuna.exc を使っています。

使っている理由は、ソースが綺麗に整理されており、カスタマイズもなんとかできそうな感じだからです。

今まで特に問題なかったのですが、WordPress 2.8.x に上げてから、カレンダウィジェットの日本語表記の曜日が文字化けするようになってしまいました。

元々「2.7.1 しか動作確認してない」と書いてあったので、とりあえず自分の環境で動くようしてみました。というわけで、忘れないためのメモです。

php はよくわかりませんので、てきとー修正です(;´∀`)
うそ書いてるかもしれないので鵜呑みにしないように

  • 方法1:イマイチな方法

    mb_substr() で文字化けしていることがわかりましたので、とりあえず下記のように mb_substr() の第4引数に’UTF-8’ を試しに指定したところ直りました。

    どうやら、WordPress本体 の charsetでUTF-8 と設定しているのに、それが伝わってない感じです。

    function.php:

            $day_name = mb_substr( $wd, 0, 1, 'UTF-8' );
            $day_ex = __($wd);
    
            if ($day_name == "S") {
    /* -- カレンダー日本語表記化 s --
                echo "\t\t\t\t\t<th class=\"". strtolower(substr( $wd, 0, 3)) ."\" title=\"$wd\">$day_name</th>\n";
    -- */
                echo "\t\t\t\t\t<th class=\"". strtolower(substr( $wd, 0, 3)) ."\" title=\"$wd\">".mb_substr( $day_ex,
    0, 1, 'UTF-8')."</th>\n";
            } else {
    /* -- カレンダー日本語表記化 s --
                echo "\t\t\t\t\t<th title=\"$wd\">$day_name</th>\n";
    -- */
                echo "\t\t\t\t\t<th title=\"$wd\">".mb_substr( $day_ex, 0, 1, 'UTF-8')."</th>\n";
    
  • 方法2:多少マシな方法
    上記の方法1でも、直りましたが、mb_substr は他にもあり、他も修正しなくていいの?的なところもあるので、方法1はやめました。

    代わりに、php.ini に内部エンコーディングをUTF-8に設定してみたところ、うまく直りました。(default_cahrset も一応追加)

    default_charset="UTF-8"
    mbstring.internal_encoding="UTF-8"
    
  • 当面は、方法2で回避しますが、誰か詳しい人に解明してほしいところ…(^_^;

    他のテーマ default1.6 と iNove 1.4.5 は問題ないので、WordPress 2.8 で新しくなったと思われるウィジェットまわりの実装が違う影響なのかもしれません。

コメントを残す

メールアドレスが公開されることはありません。