サポート » プラグイン » PostTemplate2.1.3 をWP2.5で利用すると文字化け

  • 解決済 sikao

    (@sikao)


    初めて投稿させて頂きます、宜しくお願い致します。

    表題の件ですが、現在 PHP4.3.9 MySQL4.1.20 の環境でWordPressの2.5を稼動させています。
    先日 プラグインの PostTemplate2.1.3を導入してみました。
    投稿テンプレートを作成してそこから投稿を作成 という一連の流れは問題なく動作しているのですが、
    PostTemplateのテンプレート内、タイトルに日本語を入力すると、
    テンプレートの登録が完了した時点ですべて?という文字に化けてしまいます。

    ただ、通常のWPの投稿や管理などでは化けは無く、運用自体はまったく問題ありません。
    php.iniのmbstring関連の設定値の変更を何度か試してみましたが、やはりうまく行きません、、、

    現在の mbstring 関連の設定値は下記の様にしております。

    mbstring.detect_order	no value
    mbstring.encoding_translation	Off
    mbstring.func_overload	0
    mbstring.http_input	pass
    mbstring.http_output	pass
    mbstring.internal_encoding	no value
    mbstring.language	Japanese
    mbstring.substitute_character	no value

    どなたか同様の現象が発生した方はおられるでしょうか?

    ご教授頂けましたら幸いです。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • モデレーター IKEDA Yuriko

    (@lilyfan)

    データベースおよび、各テーブルの照合順序はどうなっていますでしょうか?
    PostTemplate は専用のテーブル (wp_pt_templates) を作りますが、照合順序が正しくないものを作っていると、化ける可能性があります。

    あと、PostTemplate の PHP ファイルは、改行コードが CRLF と LF が混ざってるんですが、それが原因かもしれません。適切なテキストエディター(*)で改行コードの統一をやってみてください。

    (*) ただいまホットな話題なので、具体的な名前を上げておすすめすることができません 😉

    トピック投稿者 sikao

    (@sikao)

    >>lilyfan様
    お返事頂き有難うございます。
    早速両方を試しましたら、見事に化けが解消されました!

    ご指摘の通り、データベースの該当テーブル(wp_pt_templates)の照会順序が
    latin1_swedish_ci になっておりましたので、これを utf8_general_ci に変更する事によって解消されました。

    データベース全体の照会順序も latin1_swedish_ci となっていたので、(既存のテーブルはすべて utf8_general_ci でした)
    ここがそもそもの原因でしょうか。ひとまずデータベース自体の照会順序も utf8_general_ci としました。

    また、PostTemplateのプラグインファイル全ての改行コードも、念のためLFに統一しました。
    (エディタは NoEditor です)

    これで日本語を使っての投稿テンプレートを使う事が出来ます。本当に有難うございました。

    モデレーター IKEDA Yuriko

    (@lilyfan)

    解決してなによりです。

    ここがそもそもの原因でしょうか。ひとまずデータベース自体の照会順序も utf8_general_ci としました。

    データベース全体の照合順序はあまり関係ありませんが、新規テーブルを作るとき、照合順序を指定しない場合、ここが参照されます。PostTemplate がテーブルを作るときは、wp-config.php で指定した照合順序を参照しないので、デフォルト (今回は latin1_swedish_ci) になってしまったと思います。

    念のため、wp-config.php の DB_COLLATE に utf8_generic_ci を指定しておくとよいかもしれませんね。

    モデレーター Seisuke Kuraishi

    (@tenpura)

    現在インストール時に自動でキャラクターセットの設定が行われるのはテーブルだけなのですが、この仕様だと新規テーブル作成時に今回のような問題が起きてしまうことがあるということですね。これは明らかにプラグイン作成者の知識不足の問題なのですができればデータベースのキャラクターセットとコレーションもインストール時に正しく設定されている方が安全なことは間違いありません。というわけで trac に投げておきました。
    http://trac.wordpress.org/ticket/6827

    プラグインを開発されている方は新規テーブルを作る際には以下のような処理を忘れないようにしてください。

    if ( ! empty($wpdb->charset) )
    $charset_collate = “DEFAULT CHARACTER SET $wpdb->charset”;
    if ( ! empty($wpdb->collate) )
    $charset_collate .= ” COLLATE $wpdb->collate”;

    CREATE TABLE ~ $charset_collate

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「PostTemplate2.1.3 をWP2.5で利用すると文字化け」には新たに返信することはできません。