符号の内部管理方法

「本物の文字エンコード変換」のためには、色々と難儀なことを解決していかなければならないわけです。

CES/CCSは、おのおの32ビット、計64ビットで内部管理されていることは以前にも書きました。
これまでは暫定的に、SJISのCCS-ID、EUCのCCS-IDのように振っていましたが、まずこれを共通化させました。
そして、いよいよISO-2022-JPの対応を始めようという時、このIDから名前を引くという場面で少々困った問題が発生した。

内部では、CESは一つ、CCSは六つ(G0-G3/C0/C1)用意しておりましたが、この管理方法には無理があったのです。


管理


例えばEUC-JPなら、各バッファは次のようになるわけです。

G0: ASCII または JIS X 0201左側(英数)
G1: JIS X 0208
G2: JIS X 0201右側(カナ)
G3: JIS X 0212
C0: ISO/IEC 646
C1: ISO 6429

全体をEUC-JPというCES IDで管理するのは、全く問題ない。
しかし、例えばASCIIやJIS X 0201は、内部ではISO/IEC 2022のCES IDの下にぶら下げて一意になるよう管理されるわけです。

この場合でも、IDの重複さえ気を付ければ、EUC-JPの下にあるものとして一覧表を作り、検索は全体のCES ID+各バッファのCCS IDで一意に符号名が決定できます。

しかし、それ以外の点で問題がありました。初期設定でバッファへinvokeする際、結果C0やC1をどうアプリに返却するか、という件です。
これはいちいち表示する予定はないため、内部でどう管理するか、のみの問題ですが、C0ならC0を、C1ならC1を表わすCES-IDを持たせたかった。
なぜなら、シフトJISなどではC1は制御コードではなく文字なので、他と同様にCES-IDなどで管理しないと、必要な処理に飛ばせないからである。

結論として、全体を表わすCES-IDはそのままで、計6個のバッファごとにCES-IDとCCS-IDを用意することにしたのである。


一覧


IDから名前を引くためには、TSVファイルにその情報が必要です。
従来は全体のCES-IDと符号のCCS-IDでしたが、更に一カラム増やし、間に符号のCES-ID欄を付けてみました。
符号名を引くだけなら、CES-IDと符号のCCS-IDだけあれば充分であることは間違いないですが、折角なので拡張してみたわけです。
もって、三つのIDを関数に与えると、必要な名称が返ってくる仕組みとなりました。
一つのCCSを、CESごとに重複して管理する必要が生じますが、まぁ、このあたりは仕方がありません。

ただ、各CESにぶら下げてCCSを管理する方法にも利点はあります。

例えばJISX0213環境だと、EUC-JPならG1がplane1、G3がplane2になり、おのおのはISO/IEC 2022に対応するIDが振られます。
シフトJISでも、本当は違いますがGLにplane1、GRにplane2のIDを振っています(後で仕様変更するかもしれませんが)。

例えば、このシフトJISの環境で、GLを「JIS X 0213:???? (plane1)」とか表示するのは嘘になります(EUCでなら正しいのですが)。
そこで、シフトJISの場合は、名称欄を加工して、(plane1)の代わりに(GL)などと表示するようにしています。

このような形で、CCS-IDを上手く使いましたりしております。

2008/11/23(日)01:42 |Comments(0) |Trackback(0)

製造開発 | プログラミング | コンピュータ | [編集]

▲ページトップ

コメント

コメントの投稿

ISO/IEC 2022の入力 ホーム 次はEUC-JP
トラックバック

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

カレンダー

07 | 2017/08 | 09
- - 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 31 - -

プロフィール

miraicorp

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

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

twitterツイッター

管理用

検索フォーム

お知らせ

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

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

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

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

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

広告枠

メール

メールはこちら

リンク

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

RSSリンクの表示

QRコード

QR