サポート » インストール » Shist-JISでWordPress

  • 解決済 Hamuu

    (@hamuu)


    はじめまして。はむーと申します。
    WordPress超初心者です。よろしくお願い致します。

    現在、既存のShift-JIS環境のサイトにWordPressを埋め込みたいと思って
    います。
    試行錯誤のあげく、最終的には以下のような処置を施してみたのですが、
    ページの一部が文字化けして管理画面が正常に表示されません。

    ①WordPressのソースファイルの文字コードをすべてShift-JISに変換
    ②wp-config.phpの「DB_CHARSET」定数の設定を「utf8」→「sjis」
     に変更
    ③ファイルをアップロード後、install.phpを実行

    この時点で、インストール画面から設定した日本語のブログタイトルは
    文字化けしています。DBがShift-JISなので、当然ですが・・・

    ④表示設定のページとフィードの文字コードを「UTF-8」→「Shift_JIS」
     に変更

    すると、上記の日本語ブログタイトルは正常表示しますが、他の日本語が
    化けてしまいます。

    不思議なのは、ソースファイルは「Shift-JIS」に変換されているはずなのに、
    表示されたページのソースをみると、ページ自体の文字コードが「UTF-8」に
    変わっている事なんですが、WordPressの仕様なのでしょうか?
    METAタグの文字コードセットは「Shift_JIS」になっているので、必然的に
    文字化けします。

    既存サイトのシステムとDBが共にShift-JISで構築されていて、この環境は
    変更できないため、なんとかShift-JISで動かしたいのですが、
    元々こんな事はできないんでしょうか?
    それとも、変更箇所が漏れているあるいは変更方法が間違っているので
    しょうか?

    以下、動作環境です。
    WordPress:2.6.3日本語版
    PHP:5.1.6
    MySQL:5.0.22

    お力をお貸しいただけると幸いです。
    何卒よろしくお願い致します。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • wp-config.phpのDB_CHARSETを書き換えた後にDBを作りましたか?
    それと、言語ファイルもShift_JIS用じゃなければいけなかったような気がします。

    お力になれなければすいません。

    トピック投稿者 Hamuu

    (@hamuu)

    notlog@taichi様

    返信ありがとうございます。

    wp-config.phpのDB_CHARSETを書き換えた後にDBを作りましたか?

    wp-config.phpの方はご指摘の通りDB_CHARSETを「sjis」にして、MySQLの
    テーブルの文字コードが「sjis_japanese_ci」になっているのを確認しました。

    それと、言語ファイルもShift_JIS用じゃなければいけなかったような気がします

    これは知りませんでした(^^;。言語ファイルを探してみます。

    でも、Shift-JISに変換したソースファイルが、ブラウザで表示したときに
    UTF-8になっているのはいったいどうしてなんでしょうか?
    これが一番不思議です。

    トピック投稿者 Hamuu

    (@hamuu)

    すみません、質問の補足です。

    管理ページの表示設定で、「ページとフィードの文字コード」という
    のがありますが、これを変更したら出力ページのMETAタグのcharsetが
    設定したものに変わるのは確認したのですが、ページ自体は常にUTF-8
    で出力されます。ソースファイルの文字コードをShift-JISに変換して
    アップロードしているにも関わらず、です。
    この設定ってなにか意味があるのでしょうか・・・。

    モデレーター IKEDA Yuriko

    (@lilyfan)

    WordPress超初心者です。よろしくお願い致します。

    はっきり言いますと、初心者であれば、Shift_JIS のウェブサイトを作るべきではありません。静的な HTML で作るならばあまり問題ないのですが、WordPress のようなウェブアプリケーションを通して Shift_JIS のサイトを提供する場合、不正なマルチバイト文字列を利用したセキュリティホール (XSS 脆弱性) が発生しやすくなります。

    (適当に検索エンジンで見つけた資料)
    マルチバイト文字とXSS脆弱性 (IT Pro)
    PHP 利用時に Shift_JIS で addslashes() によるエスケープ処理に SQL インジェクション可能な穴 (star_dust の書斎)

    あと、実用面でも、Shift_JIS は AJAX との整合性が悪いため、ダッシュボードのフィードが文字化けしたりなど、不便が多いです。

    既存サイトのシステムとDBが共にShift-JISで構築されていて、この環境は
    変更できないため、なんとかShift-JISで動かしたいのですが、
    元々こんな事はできないんでしょうか?

    こういう事情があれば、既存システムはそのまま Shift_JIS で、WordPress のブログ部分は UTF-8 で動かすという手がよいと思われます。既存サイトと WordPress ブログはそんなに融合されていないと思われますので、文字コードが違ってもさほど問題ないはずです。

    コンテンツの融合を図る必要があるならば、既存システムを UTF-8 に作り変えるという大改造をした方がいいです。2008 年にもなって Shift_JIS というのは、古すぎます。

    トピック投稿者 Hamuu

    (@hamuu)

    lilyfan様

    アドバイスありがとうございます。
    Shift_JISででウェブサイトを作成するべきでない点、Shift_JISとAJAXとの
    相性が悪い点、既存サイトとWordPressを切り離して運用する点、大改造して
    UTF-8でシステムごと作り直すべきである点、すべておっしゃる通りです(^^;。

    それをすべて踏まえた上で、CMSアプリケーションとしてWordPressを導入
    しなければならない時に、なにか方法が見ないものか、と書き込みをさせて
    いただいた次第です。

    MovableTypeは、出力テキストの文字コードを任意の文字コードに変換する
    プラグインがあり、CMS側はUTF-8ネイティブのままでサイトの文字コードを
    自由に選択できたのですが、サーバ環境の問題でMovableTypeが選択から
    外れました。同様の事がWordPressでは実現できない、ということであれば、
    WordPressでなんとかするアプローチはあきらめて、できる限り既存システム
    とWordPressの出力部分を切り離し、連動せざるを得ない部分を既存システム
    の出力をどうにかするアプローチで試してみます。

    ありがとうございました。

    モデレーター IKEDA Yuriko

    (@lilyfan)

    Shift_JISででウェブサイトを作成するべきでない点、Shift_JISとAJAXとの
    相性が悪い点、既存サイトとWordPressを切り離して運用する点、大改造して
    UTF-8でシステムごと作り直すべきである点、すべておっしゃる通りです(^^;。

    そこまで分かっておられるなら安心です。「初心者」と書かれていたため、そういうことを理解されていない可能性を心配していました。

    MovableTypeは、出力テキストの文字コードを任意の文字コードに変換する
    プラグインがあり、CMS側はUTF-8ネイティブのままでサイトの文字コードを
    自由に選択できたのですが、

    DB に収めるデータや、WordPress が扱うデータを UTF-8 にして、画面主力だけを Shift_JIS にするのであれば、WordPress でもプラグインを制作したり、my-hacks.php を使ったりすれば可能です。難しいのは、コメントフォームや、トラックバック・ピンバックの文字コードの扱いでしょうか。

    ただし、そういう方法で既存システムと整合性が取れるのかどうかは疑問があります。そもそも、既存システムの仕様が不明なこと、WordPress とどう連携させるかが謎なことで、WordPress を UTF-8 運用するとどういう不具合があるのかどうかも、よく分かりません。実は WordPress ブログ側は UTF-8 にしていても、まったく問題ない可能性もあります。このへんを相談したいのであれば、「既存システムの仕様」をもっと詳細に教えて頂きたいです。

    現在の WordPress は Shift_JIS での利用は全く考慮されていません。ME 2.0.x ブランチであれば Shift_JIS での利用も可能ですが、不正なマルチバイト文字列を使ったセキュリティホールの対策は、あまり考慮されていなくて安全ではない可能性があります。もともと、ME バージョンは EUC-JP での動作が主で、Shift_JIS はオマケ機能でした。このため、 Shift_JIS での動作はあまり検証されていません。

    そういうわけで、WordPress を Shift_JIS で使うのは茨の道となりますので、まったくお勧めできない、というわけなのです。既存システムが EUC-JP であれば、「ME 2.0.11-2 を使えばよい」で済んだんですが。

    トピック投稿者 Hamuu

    (@hamuu)

    lilyfan様

    ありがとうございます~(ToT)。本当に涙もののコメントです。
    ずっと頭の中にあった靄のようなものが、気持ちよく晴れた気分です。

    質問で提示させていただいたようなWordPressの使い方は、ネットを
    あちこち調べて「選択すべきでない運用なのでは・・・」と感じていた
    のですが、なんせWordPressをいじってホンの1週間ほどなので、
    自分の判断にまったく自身をもてなかったのです。

    現在の WordPress は Shift_JIS での利用は全く考慮されていません。ME 2.0.x ブランチであれば Shift_JIS での利用も可能ですが、

    やはりそうなのですね。
    情報の中にチラホラとShift-JISが見え隠れする割に、自信をもって
    書かれた決定的な情報、「していいのか、わるいのか、どっちだ」という
    信頼できる情報がなかったんですよね。
    確証が欲しかった、というか、引導を渡して欲しかった、というほうが
    いいかもしれません。(既存システムをいじらないことに未練がある・・・)

    こういう事情があれば、既存システムはそのまま Shift_JIS で、WordPress のブログ部分は UTF-8 で動かすという手がよいと思われます。既存サイトと WordPress ブログはそんなに融合されていないと思われますので、文字コードが違ってもさほど問題ないはずです。

    サイトの構築を、おっしゃるアプローチで一本化したいと思います。
    既存システムとできるだけ切り離して、やむを得ず連携しなければなら
    ない部分は、既存システム側からの情報をWordPressに合わせるような
    方向で検討します。

    めでたくWordPressをネイティブのUTF-8で運用する決心がつきました(笑)。
    本当にありがとうございます。

    今後ともよろしくお願い致します。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • トピック「Shist-JISでWordPress」には新たに返信することはできません。