「~」が、「?」に文字化けする

MobavleType4.2で、データベースをMySQLに変更してから、「~」が「?」に文字化けする現象に悩まされてきました。

「~」を使うと文字化けするので、ずっと使えずにいたのですが、これを修正する方法を見つけたので、試してみました。

※ ちなみに、この記事は、あくまで自分自身のメモなので、このとおりにやって、失敗しても、責任とれません。あくまで、自己責任でよろしくです。

原因は、MySQLの照合順序

ヒントになったのは、もかりさんのこの記事。もかりさん、ありがとう♪

 MT(MySQL)で「~」が「?」になったり、タグが表示されない原因がわかる:MTカスタマイズ記録
 Movable Type 5.0 ベータ1のバックアップ復元をしてみた:MTカスタマイズ記録

で、そこから参照させてもらったこの記事。

 MT4における関連タグのエラーを解消する方法:immovabletype

要は、MovableTypeのPublishCharsetは、UTF-8なのに、MySQLの照合順序をshift-jisから、始めてるから、いけない、ってことなんでしょうか。

MovableTypeのドキュメントでも、「MySQLの設定は、utf8にしとけ。じゃないと、文字化けするからね?」って文書が公開されているようです。

 データベースの設定(MySQL)

う~ん、初めて見たよ。

そこで、MySQLをphpMyAdminで確認したところ、見事に、照合順序は、全部、shiftjisになってました。うわあ、これか。

しばし、phpMyAdmin上で、格闘するも、うまくゆかず。

MovableType4.2+MySQL照合順序変更手順

最終的にやって成功した手順は以下のとおり。

本当、自己責任だから、そこんとこ、よろしくです。

  1. さくらレンタルサーバのコントロールパネルから、phpMyAdminにアクセス。データのバックアップをとる。
  2. 先ほどダウンロードしたsqlファイルを開き、
    DEFAULT CHARSET=utf8DEFAULT CHARSET=ujis を DEFAULT CHARSET=utf8 に一括変換。
    ※修正しました。ごめんなさい。
  3. データベースを削除。
  4.  

  5. 新規データベースを作成。phpMyAdminで、データベースにアクセス。
     DEFAULT CHARSET=utf8に修正したsqlファイルをSQLにはりつけてインポート。
  6. mt-config.cgiをダウンロードし、DBHostを新規データベースに修正して、アップロード。
  7. MovableType管理画面にアクセス
  8. 再構築、テスト投稿して、おかしくなければ、オッケー。
  9.  

めでたく、「~」が表示されるようになりました。

~~~~~~~!