MT4i Version 1.2公開

  • 投稿日:
  • by
  • カテゴリ:

 Version 1.2を公開しました。

MT4i/MovableType用 携帯電話向け変換プログラム

 今回の変更点

  • バイト数制限時、バイト数を正しくカウントしない不具合の対策
  • ハイパーリンクのURLをGoogleのchtmltrans経由へ変換する機能の追加

 既知の不具合

  • 不具合ではないが、外部サイトだけではなく自サイト内記事へのハイパーリンクもGoogleのchtmltrans経由に変換してしまう。MT4i経由としたいが、今のところ対策予定なし。
  • <追記>バイト数制限機能にてページ分けされた際、blockquoteタグ、pタグ、ulタグなどが閉じられる前でぶった切られる場合がある(要するにタグが閉じられない場合があるってこと)。

 夏休み前には出来上がってたんですけど、公開するのが遅くなってしまいました。
 バイト数カウントの不具合ですけど、これが非常に厄介でした。MT4iは、内部でUTF-8の文字列もすべて一度EUC-JPに変換してから各処理を行っているんですが、Perlの文字列関数であるsubstr()やlength()は、EUC-JPに対して使用すると色々と不都合なことがあったんです。
 まず、EUC-JPにおける半角カナは、何故か2バイトのコードを持っていること。また、特殊な3バイトのコードを持つ文字が存在すること。この為、EUC-JPの文字列に対してsubstr()やlength()を実行すると、半角カナは2バイト、特殊文字は3バイトに換算した結果が返ってきます。まぁ、正しいんですけど。
 ただ、最終的にはShift_JISに変換する為、半角カナは1バイト、特殊文字は2バイトとして計算して頂きたい。っちゅうことで、文字列中に含まれるそれぞれの文字数をカウントし、引き算してあげるという面倒なことをわざわざやっています。
 無論、すべて僕一人でやったわけではなく、ネット上に公開されている情報を参考に(むしろパクって)仕上げました。Perlや文字コードに詳しい人なら常識なんでしょうけど、ド素人の僕はえらい苦労させられましたわ。
 あと、chtmltrans経由への変換についても、うまくURL部分だけ抜き出せなくて苦労しました。正規表現使って置換かけるわけですけど、なんかもう、どうにもこうにも。これも、ネット上に公開されている情報を参考に、なんとかかんとか動くようになりました。
 というわけで、欲しがる方は非常に少ないであろうこのMT4i、使いたい人は使ってみてくださいな。
 そうそう、現在、mt.cfgの内容を読み取ってMTのObjectDriver使ってDBへ接続するテストを行っています。MySQLへの対応も、これで何とかなる、かも?