« 現在 | メイン | ADAの通販禁止措置について 前編・アンケート結果編 »

2009年02月15日

MovableTypeにて同じ名前の日本語タグが重複して表示されるのを直す方法

この記事は超マニアックなので興味がない方はサッと流してくださいw
ADAの記事はすいませんが次回です。

このMovableTypeの日本語タグがおかしくなる問題、なにげに困っている方が多い問題のようなので、自分の備忘録としてと、他の困っている方が検索でたどり着けた時のために記載しておきます。

MovableTypeをデータベースを使って運営している方で、なぜか2つ以上の同名の日本語のタグが1つにまとまらず、重複して表示される問題の解決方法についてです。

なお、環境はデータベースがMySQLで、MovableTypeのバージョンは3.33です。
MovableTypeのバージョンが4でもたぶん一緒です。(ver.4でも同様に困っていた人がいたので。)

問題となるのは、いわゆる下のような感じです。(タグクラウドに表示した場合の例です。)

「blogシステム」っていうタグが同一名であるにもかかわらず、1つにまとまらず複数表示されてしまってます。
英語の場合は1つにちゃんと自動でまとまるのですが、日本語を含むタグはバラバラになってしまってます。

私も相当困り果て、悶々と2時間ほど検索しまくったり色々試行して頭を抱え、他の方の記載しているものではうまくいかなかったのですが、何とか解決できたので、ここに別手法の一つとして解決策を記載しておきます。

検索するとどうやら文字コードの問題である事はすぐにわかったのですが、データベースもブログもutf8で作っていたはずなのに、なぜかこの症状が出ました。

(まずここの時点で、MovableTypeとデータベースが双方UTF-8で作ってない方はそれを先に確認してみてください。それを作り直す事で、解決している方が多かったです。)

うちは両方最初からUTF-8で作っていたはずで、原因は最後まで不明だったですが、データベースの初期設定がjisだった(のか?)のためか、MovableTypeのエクスポート機能で書き出した際にいつの間にかjisになっていたのか、よくわかりません。
でもまぁ、とにかく解決させました。

データベースの管理画面(phpMyAdmin)で確認しても、やっぱり赤線部分のようにUTF-8でちゃんと登録されてました。
データベース名は「aquamind」としてあります。

う〜む、どういうことだこれ?と思って、データベース内のテーブル一覧を見てみると・・・、

あれ?データベースはUTF-8なのに、なぜか照合順序ってところがujis_japaneseになってる。ってことに気が付きました。

で、データベースをdump(書き出し)してファイル内を見てみると、

赤線部分のように所々にCHARSET=ujisとなっている部分がありました。(utf8ってかいてるところもありました。)

ということで、以下の手法で問題解決を実行しました。

このdumpファイルを作ってバックアップを作ってから(万が一のために必ずバックアップを取っておく事!)、自分のパソコンのコマンドラインから(Macの場合は「ターミナル」という最初から入っているソフトで)、このujisをutf8に変えることにしました。

dumpしたaquamind.sqlという名前で保存したファイルに対して、

sed -e s/ujis/"utf8 COLLATE utf8_general_ci"/ aquamind.sql > aquamind_utf.sql

というコマンドを走らせました。
(「aquamind.sql」というファイル内の、「ujis」という文字を「utf8 COLLATE utf8_general_ci」に変えて、「aquamind_utf.sql」というファイルに新たに書き出すという作業です)

これで、「aquamind_utf.sql」ファイルを開いてみると、上の図で示した場所が、

このように、「utf8 COLLATE utf8_general_ci」に置き換わってます。

次に、データベース管理画面(phpMyAdmin)にて、今あるデータベース内のテーブルを全部消去してから、インポート機能を使って、このutf8に文字置換した「aquamind_utf.sql」ファイルを読み込ませます。


こんな感じで。

で、その後、テーブル一覧を確認すると・・・

今度は照合順序ってところもちゃんとutf8に直ってました。

この後は、もう一回、MovableTypeの各記事ごとに再構築し(全てを再構築では一発で直らずもう一回記事ごとに再構築する必要がありました)、これで無事に、

だったものが、

というように一つにまとまりました〜。
(「まとめ記事」って書いてあるところはまだ再構築してないので複数に分かれたままです。)

今回私はブログを移転してすぐにこの障害に見舞われました。前のブログでは何も気にせず勝手にちゃんとまとまって大丈夫だったのに。
やっぱりブログ移転作業を挟むと色々問題が出ますね〜。
何はともあれ、無事まとめることができて安心しました。

以上、もし同様のことで困っている方がいたら、解決の助けになれば幸いです。

投稿者 38brain : 2009年02月15日 02:50

トラックバック

このエントリーのトラックバックURL:
http://www.aquamindlaboratory.com/cgi/mt/mt-tb.cgi/500

コメント

イイ感じに直ったんですね。良かった。
ん~、こういったプログラム関連の話は難しいですね。
サッパリわかりませんが暗号のようでちょっと楽しいw
インポートだのテーブルだのコマンドラインだの!?
とにかく直って良かったですwおめでとうございますw

投稿者 530T : 2009年02月15日 13:10

こんばんは。
難しいですね。これはさっぱりわかりません。
エクセルなどで、一言文字を打つとそれまでのセルに使用した
内容を先に引っ張ってきてくれて表示するのを、別のファイルや
他のPCでの入力では同じ設定がされておらず、かといってそれを
故意には制御できないというようなイメージを持ちました。
がさらっと対処方法を予測して修正されているとは凄すぎです。

投稿者 aqulabo_glass : 2009年02月15日 18:02

こんばんわ

よく意味がわかりませんがブログが化けたりすると嫌ですよね~
うちのブログはアクセス数が少ないおかげで少しの誤字脱字があっても
右から左に受け流してます(古っ!)

投稿者 大和えび : 2009年02月15日 20:24

>530Tさん乙




>aqulabo_glassさん
う、う〜ん、まぁ遠からず、かな。
エクセルのオート機能は役に立つときはすごく便利なんですけど、あまりにも余計なお世話で勝手に変えられたりするのがイラッとしますねw

>大和えびさん
けっこう誤字脱字って自分では気が付きにくいんですよね。
いつも3回ぐらいは読み直して、少しずつ修正したりしてアップしてるんですけど、それでも今見ると、あ、ここ違う、とか気が付く事ありますからねw。

投稿者 38brain : 2009年02月16日 04:02

コメント記入




保存しますか?

(書式を変更するような一部のHTMLタグを使うことができます)