ユーザー定義外字の入出力

ユーザー定義外字の入出力を作り始めた。

これに先立ち、シフトJISやEUC-JPについて再調査してみたところ、色々と知らなかったことが明らかになった。


シフトJIS


シフトJISの亜種はいろいろあって、外字領域についても実装によりまちまちだと思われる。
これも、既存の実装は全部対応する予定であり、全てはCCS-IDで識別可能なものと考えている。

おなじみ、Windows-31Jでは、0xF040‐0xF9FCである。
後述するが、Unicodeの外字領域のU+E000‐U+E757にマッピングしている。

Mac OSでは違うし、大型の計算機でも富士通(R90)とかHP-UXとかではまた違うのである。

そういえばPC-9801の外字領域もまた独特だったな。
最大188字で、シフトJISへの変換が面倒なので引用資料からそのまま書くが、最初の94字がJISコードで0x7621‐0x767e、残りの94字が0x7721‐0x777eという、微妙なところに割り当てられている。


EUC-JP


それは良いとしても、EUC-JPの亜種ってのも、色々あるのであった。
EUC-JPは基本的に外字に対応していないはず。
なぜなら、Windowsのユーザー定義外字は0xF040‐0xF9FCだが、0xF040ってのは95区1点、つまりISO/IEC 2022の94×94を超えた位置にあるからだ。しかも20区分、1880字も。

それでも、強引に対応する実装は存在する(した)ようだ。
eucJP-openという今では使われていないらしい符号では、半分の10区に分け、G1とG3の85区‐94区に割り当てているらしい。

EUC-HJなんてのもあった。これは2バイト目に0x21‐0x7eを追加し、この範囲を外字領域にするものらしい。
既にEUCでは無いような気もするが、これで理論上94×94の新たなマップが作られ、最大8,836字の領域が存在する。このうちのある程度が外字領域に使われているらしい。
詳細は、もう少し調べる必要がある。


Unicode


Unicodeの場合、次の符号位置が外字だ。

BMP U+E000‐U+F8FF (6400字)
15面 U+F0000‐U+FFFFD (65534字)
16面 U+100000‐U+10FFFD (65534字)

ISO/IEC 10646という、Unicodeを丸呑みする国際規格の場合、上に加えて更に下も外字だ。

00群224面‐255面 0x00E00000‐0x00FFFFFF (2,097,152字)
96群‐127群 0x60000000‐0x7FFFFFFF (536,870,912字)

いくら何でも多すぎじゃないか?

2008/12/01(月)02:18 |Comments(0) |Trackback(0)

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

▲ページトップ

コメント

コメントの投稿

出力のエスケープシーケンス ホーム シフトJISとEUC-JPの実装はこうなった
トラックバック

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

カレンダー

03 | 2017/04 | 05
- - - - - - 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