ISO-2022-JP-MS

昨日書いたCP50220と、派生のCP50221、CP50222はの実装は終わった。

精神衛生上大変宜しくなかったので、マシなものを作るべく、次は「ISO-2022-JP-MS」を作り始めた。

仕様の概要


ESC 2/4 4/2に拡張文字があることは同じですが、ユーザー定義外字が別の文字集合に分離されているのが特徴。

CP50220/CP50221/CP50222は、ユーザー定義外字が95区~114区(1バイト目0x7f~0x92)とか、有り得ないところに存在するため、これが分離されている。

IBM拡張漢字(115区~120区相当)は無いけれど、これはNEC選定IBM拡張漢字があれば特に困ることは無いでしょう。

ただ最大の問題は、これを、どこの誰が使っているのか、さっぱり分からないことです。


エスケープシーケンス


全てをG0だけで済ませるのはISO-2022-JPと同じです。
ユーザー定義外字の文字集合は、私用の終端文字3/15が使用されています。

つまり、

ESC 2/4 2/8 3/15 2/1 2/1 ESC 2/8 4/2

これで、U+E000 を1文字表現できる、と。そういうことになります。

私用ですから他の符号には使えない。処理系内部では、エスケープシーケンスを受信した時にCES-IDを見て、ISO-2022-JP-MSだったら、ユーザー定義外字の文字集合のCCS-IDで指示するようにしてあります。


おまけ


2バイト文字から2バイト文字に切り替える処理が普通に出て来るわけですが、出力結果がおかしかった。
なぜか、JIS X 0208とFp=3/15の間に、ASCIIを指示するエスケープシーケンスが出て来る。

よくよく考えてみたら、文字集合を切り替える時には一旦リングバッファやその他バッファをフラッシュしており、フラッシュ処理ではASCIIまたはJIS X 0201に戻すようエスケープシーケンスを吐いているのだった。

ファイルを閉じる前ならまだしも、文字集合を切り替える度に出てもらっては困るので、久々にAPIの仕様変更、引数がまた一つ増えた。
DLLのフラッシュ処理 LibFlushDecode() にbool型の引数を付けて、文字集合の切り替えだけならfalse、最後はtrueにして、trueの場合のみエスケープシーケンスを吐き出すようにしてみた。

2009/01/12(月)23:07 |Comments(0) |Trackback(0)

文字 | プログラミング | コンピュータ | [編集]

▲ページトップ

コメント

コメントの投稿

ARIB STD-B24の文字集合 ホーム Microsoft Windows Codepage : 50220 (CP50220)
トラックバック

この記事にトラックバックする(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