EUC-TW

今日は、台湾の符号の一つ、EUC-TWの入出力に対応してみた。


EUC-TW


現在、変換表はCNS 11643の第一字面と第二字面だけなので、その範囲内だけですが、入出力は出来ました。

EUC-TWは幾つかあるEUCの中で、恐らく最も特殊であり、3バイト文字が存在します。

G0 ASCII
G1 CNS 11643-1
G2 CNS 11643-2...16
G3 未使用

G0とG1は、見た目も普通のEUCです。
G2は、SS2のあと3バイトあります。SS2と合わせて、4バイトになります。

SS2の次は字面の選択で、10/2から11/0で第二字面から第十六字面を選びます。
その次の2バイトで、その字面内での区点番号を指定します。


ISO/IEC 2022的にどう考えるのか良く分かりませんが、普通に「3バイト文字」として扱うのだと思います。実際、そのように実装してあります。

ISO/IEC 2022では、中間文字2/4を使用した場合、終端文字4/0‐5/15で2バイト、6/0‐6/15で3バイト、7/0‐7/13で4バイト、という仕様があります。
参考文献
http://www.wdic.org/w/WDIC/ISO/IEC%202022

このG2相当の符号は登録されてはいませんが、この3バイト文字に相当するのでしょう。


そういえば、終端文字3/0‐3/15の私用用は、どうやって符号長を認識すれば良いのだろう。


課題


G2は、SS2に続くバイトで字面を選ぶわけです。
基本的に2から16で、2が10/2なわけです。
ここから、1なら10/1と選択することも不可能ではない、ということになります。果たして、この10/1と指定された場合は、どういう動作をするべきなのだろうか。

Operaの場合、当たり前のように第一字面の文字が出てきました。

Firefox 3の場合、SS2 0xa1 という符号列をエラーとするようです。このため、その後の余った2バイトは、コードポイントからG1となり、G1の文字が表示される。

こちらの実装は、現在は、4バイトは認識しつつ、10/1は不正だろうと判断し、1文字のエラー文字として出力しています。

果たして、どの出力が最も良いのだろう。

2008/12/18(木)20:55 |Comments(0) |Trackback(0)

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

▲ページトップ

コメント

コメントの投稿

古い符号 ホーム ISO-2022-CNに見るFirefox 3の残念な動作
トラックバック

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

カレンダー

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