文字コード変換ツール

弊社「もじかん」は、非常に多くの文字コードを変換することを当初からの目標としました。
以前より研究を続けた結果、一つの実行ファイルで全てを処理することは不可能と判明しており、そのため「もじかん」では、言語や符号ごとに大雑把にDLLを分けて処理する方法を採用しました。

次のような順序で処理は進みます。
1. gtef.exe (実行ファイル)
2. gtef.dll/gtef.so (言語DLL制御・管理DLL)
3. 各コードのDLL

gtef.dll/gtef.so がコードに合わせて各コードのDLLを呼びます。
実際のファイルの読み書きはgtef.dll/gtef.soが実施しており、各コードのDLLは変換処理のみを実施します。

この方法は技術面で概ね成功を見ましたが、まだ課題はあります。

現在研究していることは、CESの処理とCCSの処理も分離することです。

例えば現在、Unicodeの入出力で、UTF-8 → UTF-16 は、次のように動作します。

1. UTF-8を読み取る
2. UTF-8の符号列から内部コードに変換
3. 内部コードの符号列からUTF-16に変換
4. 結果を書き出す

ファイルの読み取りはgtef.dll/gtef.soが実施しますが、このDLLはCESの処理はしておらず、純粋に言語DLLの管理のみです。
従って、各言語のDLL(この処理の場合はUnicode用のDLLであるlib_unicode.dll/.so)がCESとCCSの双方を処理していることになります。

現在考えているのは、CESとCCSのDLLも分離してしまうことです。

1. 入力ファイルを読む
2. CES処理DLLを呼び、内部コードに変換する
3. CCS処理DLLを呼び、内部コードを調整する(入力の補正)
4. CCS処理DLLを呼び、内部コードを出力するコードに合わせて変換する(CCS変換処理)
5. CES処理DLLを呼び、内部コードから出力のコードを作成する(出力CES処理)
6. 結果を書き出す

例えばTRONコードのTADように、文字とは直接無関係な情報を含む符号がありますが、これはCESの処理の段階でスルーし、CCS処理にまわさずそのままの形で出力することも可能にしたいと考えています。
例えば付箋などの情報のうち、半角/全角の付箋など、文字コード処理として必要なものは書き換え、さもなくばそのまま出力させる、など。

CESレベルでの内部コードは、各ブロックごとに連結リスト形式で管理し、出力可能になったらフラッシュする、可能になるまではメモリーに温存しておき、いつでも書き換えられるようにしておく、といった方法を検討中です。
しかしそのデータが画像などの場合はどうするのか、画像のフォーマット変換ツールならともかく、文字コード変換ツールでメモリーに一旦保存する必要があるのか等、考えるべき課題はいろいろありそうです。


この方法を用いると、理論上、CESとCCSの組み合わせは自由になりますが、完全自由にしてもまともなコードは出力できません。
例えばSJISやEUC-JPの出力をするのに、CES出力処理にUnicodeのコードで与えても処理できないので、ここへはJISの文字集合が出て行くような管理が必要です。
これをgtef.dll/gtef.soのようなDLLで一括管理するのか、あるいは常に情報を持たせてDLL間の連絡に用いるのかは、今後さらに検討していく必要があるかとは思っています。

2013/03/02(土)16:16 |Comments(0) |Trackback(0)

製造開発 | ソフトウェア開発 | コンピュータ | [編集]

▲ページトップ

コメント

コメントの投稿

青空文庫 ホーム 驣 うまがおどる
トラックバック

この記事にトラックバックする(FC2ブログユーザー)
▲ページトップ

カレンダー

10 | 2017/11 | 12
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 - -

プロフィール

miraicorp

Author:miraicorp
未来情報産業(株) 社長

主として「ICカードこれひとつ」や「文字、文字コード」処理、時々C++などについて記述しています。

twitterツイッター

管理用

検索フォーム

お知らせ

コメント等お気軽にどうぞ。

気に入ったら拍手して頂けると、今後の記事を書く際の参考や励みになります。

■お仕事を募集しております
ソフトウェア製造の仕事や、原稿執筆の仕事などを随時受け付けております。
お気軽にご相談下さい

■初めての方へ
こまごまと更新しているため、他にも関連する記事があるかもしれません。
「月別アーカイブ」「検索フォーム」「カテゴリ」などをお試し下さい。
トップページはこちら

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

広告枠

メール

メールはこちら

リンク

このブログをリンクに追加する

RSSリンクの表示

QRコード

QR