JIS対応について#2
なんか文字コードに躍起になっているが、もともと萌ディタの開発日記が発端である。
http://www.geocities.co.jp/SiliconValley-Oakland/3617/progress_2004Q2.html
EUCはSJISにない文字も扱える仕様に変更済み。
次にJISなんだが、そこに書いてあるようにいろいろあるわけだが、
読み込みについてはどんな実装をするか悩まずに出来た。
EUC変換のために作ったテーブルを使って、jconvert.pasで対応してないESC(IやSO/SIを判別し、
私用領域、外字領域、半角カタカナを含むすべて直にユニコード変換すればいい。
EUC変換についても書いたとおり、Windows式でないSJISに意味はないので、
JISについてもSJISと同じ0201マップ、0208マップを持つという前提で変換する。
それ以外に正解はない。
書き込みについては正解が一つではないようだ。
JISへの対応はメールへの対応に他ならず、メールで化ける可能性のある書き出しはしない。
すなわちOE同様、半カナは全カナに変換したのちに、ESC$BとESC(Bのみで書く。
OEと同様、テキスト先頭はESC(Bを入れない。
そこまではいいのだが、OEと同様、私用領域と外字の文字も書き込むかどうか。
メールにJISが使われるのは7bitコードだからであり、
7bitで表現できない文字を書いてはいけないはずなのだが、
Thunderbirdで外字を使ったメールを送受信してみると、化けずに行き来できる。
ちなみに、本当は送受信にもOEを使って試した方が良いのだろうが、
アカウント設定してないのでこれのためにやるのが面倒だ。
8bitで書き込む私用領域と外字領域の文字が不正であるかどうかは、
メーラーが送信の時点でブロックしてないんだから、不正でないという事にしてしまおう。
少なくとも、真魚での編集時点で潰すべき物ではない。
さて、書き込みにはさらに問題があって、
EUCの補助漢字領域とJISの外字領域がダブって、ユニコードからの変換テーブルを共有出来ない。
EUCの場合、SJISに補助漢字領域がないから仕方なくテーブルを持ったのであり、
JISはSJISを経由して変換しても何ら問題はないわけだから、
従来のjconvertによる変換をESC(Bに変えるだけでいいのではなかろうか。
それを言ったら、読み込みもSJIS経由を改造した物で良いのではなかろうか。
調べ尽くしたあげく、今まで通りって事に落ち着きそうな予感。