2010-10-19-01-文字コードの話 - project-enigma

2010-10-19-01-文字コードの話

>> Site top >> weblog >> 月別アーカイブ >> 2010年10月のlog >> 2010-10-19-01-文字コードの話

最終更新日付:2013/12/31 07:35:54


文字コードの話

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-2017 project-enigma.
Generated by CL-PREFAB.