2010-10-19-01-文字コードの話
>> Site top >> weblog >> 月別アーカイブ >> 2010年10月のlog >> 2010-10-19-01-文字コードの話
最終更新日付:2010/10/19 01:00:00
文字コードの話
2010 年 10 月 19 日
多分2009年の春頃からだ。文字コードを簡単に扱える仕組みを作りたいな、と思うようになった。いつもながら『欲しい』でなく『作りたい』なのがポイントだ。
Windows だけでプログラミングをしていた頃は、無邪気に Shift-JIS 前提で書いていれば良かった。16ビットの Unicode もあったが、真剣に取り組むだけの必要性に恵まれず無視。しかし、初めて UNIX 系の OS を触ることで『複数の文字エンコーディング』という面倒な世界を開くことなる。当時は EUC-JP だった。時間の流れといくつかの環境が移り変わっていく間に、今度は utf-8 を経験する。『複数のプラットフォームで動作させる』というのが重要になってきた自分にとって、文字コードの扱いは頭の痛い問題だった。あ、Java で作成したプログラムはここで言う『複数のプラットフォームで動作する』に該当しないことに注意。Java に関して言えば、『複数のプラットフォームで動作する』のは Java VM であって Java プログラム自体は Java VM 上でしか動かないからだ。
それはそれとして、複数のエンコーディングを上手に効率良く扱える仕組みだ。それは、効率のためにインライン関数を中心に構成したクラスユーティリティのようなものになり、原則として多態性を使うことはないだろう。単一のビルドでマルチエンコーディングをサポートするのでない限り、コンパイル時点で全てが解決されるのが望ましい。この時点では、大体以下のようなコードをイメージしていた。
typedef Encoding::Shift_JIS EncodintT; EncodingT::CharType* p = EncodingT::StrStr( pParam, "foo" );
つまり、typedef で指定するクラスを変更するだけで、プログラムが扱う文字エンコーディングをスイッチできるというものだ。そしてこれをテンプレートパラメータに渡すことで伝播させる。
大体、出発点はこんな感じだった。その後実際に作り、使っていく中で色々と軌道修正が入ることになるが、それはまた改めて書くことにしよう。
コメント
このページのタグ
Page tag : 開発
Copyright(C) 2005-2021 project-enigma.
Generated by CL-PREFAB.