MT4i Version 1.2公開

| コメント(2) | トラックバック(0)

 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への対応も、これで何とかなる、かも?

トラックバック(0)

トラックバックURL: http://www.hazama.nu/mt/mt-tb.cgi/770

コメント(2)

$html =~ s/[Aa][Bb][Cc]/xyz/;

置換コマンドでは次のような使い方もできます。

$html =~ s/abc/xyz/i;

ご指摘ありがとうございます。>ゲストさん
iオプションの存在は調べて知っていたんですけど、一度試して何故かうまく動かなかった為、放置していました。
今試してみたら、ちゃんと動くようです。
次期バージョンに反映したいと思います。

コメントする

月別 アーカイブ

ウェブページ

OpenID対応しています OpenIDについて
Powered by Movable Type 5.12

Follow Me

AD

Flickriver::Most Interesting

tai-tetsu - Flickriver

このブログ記事について

このページは、太鉄が2003年8月20日 15:09に書いたブログ記事です。

ひとつ前のブログ記事は「ぶらすたー」です。

次のブログ記事は「逆転裁判 vs MMR」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。