「?」が、「?」に文字化けする
MobavleType4.2で、データベースをMySQLに変更してから、「?」が「?」に文字化けする現象に悩まされてきました。
「?」を使うと文字化けするので、ずっと使えずにいたのですが、これを修正する方法を見つけたので、試してみました。
※ ちなみに、この記事は、あくまで自分自身のメモなので、このとおりにやって、失敗しても、責任とれません。あくまで、自己責任でよろしくです。
追記:記事を投稿してから、思い出しました。そういえば、このサーバは、まだ、MySQLの照合順序、修正してなかったです。orz。
原因は、MySQLの照合順序
ヒントになったのは、もかりさんのこの記事。もかりさん、ありがとう♪
▼ MT(MySQL)で「?」が「?」になったり、タグが表示されない原因がわかる:MTカスタマイズ記録
▼ Movable Type 5.0 ベータ1のバックアップ復元をしてみた:MTカスタマイズ記録
で、そこから参照させてもらったこの記事。
▼ MT4における関連タグのエラーを解消する方法:immovabletype
要は、MovableTypeのPublishCharsetは、UTF-8なのに、MySQLの照合順序をshift-jisから、始めてるから、いけない、ってことなんでしょうか。
MovableTypeのドキュメントでも、「MySQLの設定は、utf8にしとけ。じゃないと、文字化けするからね?」って文書が公開されているようです。
う?ん、初めて見たよ。
そこで、MySQLをphpMyAdminで確認したところ、見事に、照合順序は、全部、shiftjisになってました。うわあ、これか。
しばし、phpMyAdmin上で、格闘するも、うまくゆかず。
MovableType4.2+MySQL照合順序変更手順
最終的にやって成功した手順は以下のとおり。
本当、自己責任だから、そこんとこ、よろしくです。
- さくらレンタルサーバのコントロールパネルから、phpMyAdminにアクセス。データのバックアップをとる。
- 先ほどダウンロードしたsqlファイルを開き、 DEFAULT CHARSET=ujis を DEFAULT CHARSET=utf8 に一括変換。
- データベースを削除。
- 新規データベースを作成。phpMyAdminで、データベースにアクセス。 DEFAULT CHARSET=utf8に修正したsqlファイルをSQLにはりつけてインポート。
- mt-config.cgiをダウンロードし、DBHostを新規データベースに修正して、アップロード。
- MovableType管理画面にアクセス
- 再構築、テスト投稿して、おかしくなければ、オッケー。
めでたく、「?」が表示されるようになりました。
??????!
有用な情報ありがとうございます!
当方sakuraレンタルサーバでMTを使用してサイト運営させていただいているのですが、上記手順にて一度DBを削除し、すべてのキャラセットの指定をutf-8に変更してみたのですが、やはり文字化けが起こります。。
なにか「それは当たり前だろっ!」というような手順が抜けているのかな?と疑問になりましたのでもしそのようなことがあれば教えていただけると助かります。
環境は、MobavleType4.2をsakuraで使用しております。
よろしくお願いします!
通りすがりの迷える子羊さん、こんにちは。
わたしもほかの方の記事を参考にやってみた口で、データベースについてさほど知識があるわけではないので、記事にも書いたとおり、うまく行かなかった場合どうすればいいか、というのはよくわからないです。
お力になれず、ごめんなさい。