UTF-8からの変換に対応しないと・・。

以前の更新で別館のページにメールフォームを設置しました~
が、これはふつーにHTMLで作ったものでbotの攻撃を受ける可能性が高い・・
サーバ運営元のサイトにもメールフォームのセキュリティ対策はきちんとするようにというようなことがかかれています。
―ということで今FLASHを使った方式に変えようとしているところです。

ここで問題が・・。

FLASHでは文字コードにUTF-8が使われています。そこでFlashから送られてくるデータをメールで送信するにはUTF-8からISO-2022-JPへのコード変換をやらないといけない訳なんですね~。
ところが、すでに公開されているライブラリには一部の記号や漢字を正しく扱えないものが多いようです。
(ActionScriptでSystem.useCodePage = true を使う方法もあるがこれを使うのはあまりよくないきがします。)

そんなわけで前回に引き続き今回はUTF-8とShift_JIS/ISO-2022-JPのコード変換ライブラリを作ることにしました~。

で、ここで気になる点が出てきました。
Shift_JIS・Unicodeの両方で同じか似た形の記号や漢字が違うコードで登録されているんですね~。(Unicodeは記号のみ)
あと「\」や「~」といった記号の変換も問題アリ・・。

というわけで変換ルールを1パターンだけにしてしまうと別のルールで変換された文字は正しく扱えなくなってしまいます。

そこできき☆彡は複数の変換表を組み合わせたものを使うことにしました~。
使った変換表は
 ・CP932.txt
 ・http://hp.vector.co.jp/authors/VA010341/unicode/
   で公開されている変換表
 ・JIS0201.txt JIS0208.txt
です。(1つめと3つめはUnicodeコンソーシアムのもの)

これらを統合させて新たな変換表を作り出しました~。
基本的にはCP932を用い、補助変換ルールとしてほかのものをとり入れています。

これを基に変換スクリプトを作成~
さらにIBM拡張文字や半角カタカナの変換機能をつけて・・

 ようやく完・成~!

 ふぅ、2週間くらいかかっちゃった(^-^;

近いうちにサイトで公開しておきま~すっ☆

さて、新メッセージフォーム完成まであと一息だ~
ちなみに、きき☆彡はPerlプログラムを作るに当たって、

・use文はなるべく使わない
・どうしても使わなければならない場合は以下のものに限定
 DBD
 Image::Magick
 IPC::Open2
 IPC::Open3
 LWP
 Net::SMTP
 Net::POP3
 Time::HiRes
・サブルーチンの戻り値はreturnで明示
・特殊変数 $_ には頼らない

というルールを個人的に作っています。
まぁどうでもいい話でしたね (^-^;

コメント☆

アイコン: (未実装)

トラックバック


トップページへ