Movable Type で MySQL 5を利用している際に、
- ブログ本文などに含まれる「~」という文字などが「?」に文字化けする
- 日本語のタグが合算できない(Aブログ記事とBブログ記事に同じ日本語のタグを付与した場合、タグ一覧などで2件とならず、それぞれ1件として表示される)
といった不具合を解消する方法を紹介します。
すでに多くのサイトで紹介されているので目新しい情報ではありませんがとりあえず。
1.原因
タイトルの不具合が生じる原因は、対象テーブルのカラムの照合順序が「ujis_japanese_ci」になっているためのようです。この照合順序を「utf8_general_ci」にすることで解消しているようです。
ちなみに、「照合順序」とはデータベースから select する際のルールを示すもののようで、
- ujis/utf8:文字コード
- japanese/general:照合形式
- ci/cs:大文字・小文字を区別する・しない
という意味があります。
また、「大文字・小文字の区別」は英文字だけでなく、全角・半角や日本語の濁音・清音も含まれるようです(どのように区別されるかは、japanese/general の設定に依存)。
2.対策
以下、phpMyAdmin を使って「ujis_japanese_ci」を「utf8_general_ci」にする設定を紹介します。phpMyAdmin ログインした状態から説明します。
2.1 ブログ記事の文字化けを解消する場合
左メニューより mt_entry テーブルをクリック。
次の画面で「構造」のタブが選択されていることを確認し、mt_entry テーブルのフィールド一覧が表示されるので、一番下の「すべてチェックする」をクリック。これですべてのテーブルのチェックボックスがチェックされます。
「すべてチェックする」の右側にある鉛筆マークのアイコンをクリック。
照合順序に「ujis_japanese_ci」が表示されているものについて「utf8_general_ci」に変更し、「保存」をクリック。照合順序が選択されていないものは変更しないでください。
以上です。なお、一度文字化けしてしまったものについては手作業で修正が必要なようです。
2.2 日本語の連結ができない不具合を解消する場合
mt_tag テーブルについて、2.1と同様の変更を行います。
こちらも、変更後に追加したタグについては合算されますが、既存のタグは合算されないようです。
2.3 その他
コメントの文字化けを変更する場合は mt_comment、トラックバックは mt_tbping / mt_trackback ですが、一通りやっておくとよいでしょう。
コメントする