Movable Type 備忘録

 タグクラウドで日本語タグが重複して表示される

  • Aug312008
  • Vote:
    http://bizcaz.com/archives/2008/08/31-185502.php
  • Categories: Troubleshooting
  • Tags:
  • Social Bookmark

こんにちわ^^

訪問者さんから日本語タグを使った場合にタグクラウド表示すると重複して表示されるという質問を頂きました。 最近ではあまり聞かないのですが以前は割と多かった質問です。
で、その都度 Movable Type で使用する文字コードとデータベースの文字コードが不一致してませんか!? と返答してました。

Movable Type のデフォルトの文字コードは UTF-8 です。 PublishCharset 環境変数を mt-config.cgi 内に UTF-8、EUC-JP、Shift_JIS の何れかを選択することで Movable Type のデフォルト文字コードを変更することもできます。

Movable Type で扱う文字コードが UTF-8 にも関わらず、データベースで保存されるデータ( 日本語 )が UTF-8 以外の場合、普通に読み出しちゃうと矛盾しちゃいますよね ( ̄∇ ̄)b
たとえば、Shift_JIS で書かれたテキストファイルを UTF-8 で開くと文字化けしますよね。それと同じ状況なんだと思うんです。

半角英数字( ASCII コード )にしても、日本語文字( マルチバイト )にしても、実はすべてコード( 数値 )の羅列です。

普通にブログ記事を書いてる分には意識することはありませんが、タグ検索などではコード( 数値 )によるマッチングが行われることになります。
UTF-8 という文字コードは、1 文字が要するバイト数というのがバリアブルに変化する文字コードと聞いたことがあります。EUC-JP、Shift_JIS は固定長( 日本語文字だけが 2 バイト!? )という扱いなんだそうです。

なので、すべての日本語タグが重複するのかどうか分かりませんが、たまたまコード( 数値 )が一致してしまえば重複して表示されることになる・・・と理解してます。

すいません、明確な回答できなくって(; ̄- ̄)
とにかくわたしが言えることは、

  1. Movable Type の文字コードとデータベースの文字コードを一致させてみてください。
  2. 日本語タグを使用しないようにしてください。
    ※たぶんタグに日本語使った時だけが問題なんじゃないかと。

ということしか言えません。
そそ、仮にデータベースの文字コードを変更する場合には必ずバックアップを取ってから変更してください。 文字コードを変更すると、保存されてるデータが消去!? されちゃうそうです ( ̄∇ ̄)b
また、データベースの文字コード選択の他にデータ自体のコード変換も必要になると思います。そのコード変換を行った上でデータベースにインポートする必要があるのではないかと。エクスポート時にコード変換してくれるのならいいんですけどね。

コード変換には mt/tools/ フォルダの下にある convert-db というスクリプトをゴニョゴニョするのではないでしょうか。 205 行目辺りに使い方が明記されてます。どうやら TELNET or SSH からコマンド実行するようです。
また、convert-db は Movable Type のデフォルトのテーブルが変換対象です。プラグインなどで追加されたテーブルは変換されない・・・と読み取れます (; ̄∇ ̄A

以上です。

 Trackback Pings(1)

from オレメデア

「Movable Type 5 正式版」に移行したのち、ブログ記事の「タグ」で、ちょっとした不具合が起こっていました。ブログ記事を投稿した際に、新規作成し...

 Comments(4)

#1: Posted by Author Profile Page oscar @ August 31, 2008 [REPLY]
user-pic

昔やった、文字コード変換、力技編。
phpMyAdmin使いました。
SQL文で出力(エクスポート)します。(文字コード変換出力もできるけど、そのまま出力)
出来あがった、SQL文を(文字コード変換可能な)エディタで開き、UTF-8にして保存します。
変換したSQL文をインポートします。

一応出来たけど、データの何箇所かで、文字化けが発生しました。(そこは手動で訂正)

#2: Posted by Author Profile Page bzbellからoscarへの返信 @ August 31, 2008 [REPLY]
user-pic

>>1 oscar さん

> 出来あがった、SQL文を(文字コード変換可能な)エディタで開き、UTF-8にして保存します。
> 変換したSQL文をインポートします。

テキストエディタの機能でコード変換したんですかキャハハ
そっかぁ、そいう手もありですね。
言われてみれば、プラグインのコードなどはわたしもテキストエディタでやってますねうぅ~ん
さすがにダンプしたデータはやったことないけど( やる必要なかったけど )、それはお手軽でいいかもですね。
問題はどこまで信頼できるか・・・ですかね。失敗!? することもあるんですね。

#3: Posted by Author Profile Page oscarからbzbellへの返信 @ September 1, 2008 [REPLY]
user-pic

>>2 bzbell さん
SQL文としてエクスポートすると、まんまテキストだから、普通にコードいじっている場合と一緒ですよ。
> 問題はどこまで信頼できるか・・・ですかね。失敗!? することもあるんですね。
これは、後で該当箇所表示させると、受信したトラックバックの文字コード処理が、きちんと出来ていなかったとかだったので、あきらめるしかない部分でしたよ。出力の問題では無かったみたい。

#4: Posted by Author Profile Page bzbellからoscarへの返信 @ September 1, 2008 [REPLY]
user-pic

>>3 oscar さん

こんばんわ^^

> ・・・出力の問題では無かったみたい。

およっ!? ということはテキストエディタで力技!! ってのも問題ないですね。
良いこと知りましたうるうる

 Post a Comment

 

コメント用フィード