シフトJISの入出力

今日は、シフトJISの入出力周りを作った。
シフトJISの文書を入れ、シフトJISで吐き出し、ファイルコンペアして一致したので、概ね動作しているようです。

入力を受け、各DLLを呼ぶ箇所はISO/IEC 2022準拠になっていることは先日書いたとおりですが、1バイトごとにDLLをコールするので、2バイト目以降かどうかのフラグを新設。
DLLは、必要に応じてフラグを立ててアプリケーションに戻します。
これがないと、2バイト目以降もコードに応じてバンク選択処理が動いてしまうため、違うDLLが呼ばれてしまうというバグが発生します。


現状の仕様


JIS X 0208のみをまず対象とし、シフトJISをMIXTUREに変換するEncodeと、MIXTUREをシフトJISに変換するDecodeを作った。

MIXTUREは、バンクと文字コードからなる構造体であることは先日書いたと思いますが、このバンクとは何かというと、「TRONコード」のバンクです。

念のため説明しておくと、TRONとは国産のOSです。デスクトップOSとしては普及しませんでした。携帯電話などの組み込みでは使われています。
デスクトップOSはBTRONという仕様で、実際の製品として「超漢字」が販売されています。このOSが使う符号系がTRONコードというわけです。

MIXTUREコード


基本的にはTRONコードの「言語面」がバンクに対応します。
最も基本の第1面は内部で0x21として管理されます。0x21なのは、TRONコードのエスケープシーケンスの文字をそのまま使っているからです。
ただ32ビットあり余裕があるので、TRONコードとして未使用になる数値を、内部コード用に用いています。
例えば0x00はゼロページという名前で呼んでおり、これはUnicodeそのままが格納されます。

TRONコードの場合第16面と第17面にUnicodeがありますが、第1面などにある文字は除外されているようなので、最初から専用のバンクを用意しているわけです。その方が高速だし扱いやすいので。

いかなるバンクでDecodeに入力されても、DLLは適切な符号に変換し、もって目的のローカルな符号を吐き出します。

なお、以前の実装と同様、今回もTRONコードのTADの入出力処理を付けます。
内部では言語面情報がそのまま保存されるので、TAD→TADで変換しても、TRONコードとしての文書情報は殆ど失われずに出力されるでしょう。


異言語間の変換問題


組み始めて程なくして発生した、当たり前過ぎる問題として、日本語環境では朝鮮語や支那語の変換テーブルに触れられない、という点です。

例えば日常的には、Unicodeを入力し、シフトJISを出力する場合等が想定されます。

日本語のDLLから、そっちのDLLを呼べばよいのでしょうけど、どう考えても管理が無理すぎるので、それはしない方向で検討した。

基本的に、互換性のない言語間の変換は、やはり一度Unicodeを介することになっています。
従来の実装は全言語が一堂に会していたため、その場で好きなように変換できましたが、今回はそうはいかない。

そこで思い切って、struct MIXTUREに32ビット、UCS-4を格納する変数を追加し、最初からUnicodeに変換した結果も持ち回すようにした。structに格納する時点で、Unicodeに変換して一緒に入れておく。

互換性のある範囲内では従来通りバンク+文字コードを使い、文字の意味を失わないようにして処理する。
そうでない部分はUnicodeの番号から変換することで、後からどんなDLLが追加されても従来のDLLはそのまま動く「管理不要のマルチリンガル」が実現できるものと思われます。

2008/11/17(月)19:36 |Comments(0) |Trackback(0)

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

▲ページトップ

コメント

コメントの投稿

UTF-8とUTF-16読み込みも対応してみた ホーム 出力はリングバッファ
トラックバック

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

カレンダー

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