From: Jun-ichiro itojun Hagino Date: 2000-11-08T15:20:34+09:00 Subject: [ruby-dev:11429] Re: Ruby I18N >|太田 昌孝: 「いま日本語が危ない—文字コードの誤った国際化」 >|(丸山学芸図書,ISBN: 4895421465)を読むと,こういった問題を >|含まない文字コード系として ISO-2022-INT-* というものがある >|ようなのですが,そうでもないのでしょうか ? >ISO-2022-INT-*はステートフルなんで内部コードには使えないでしょ >うね。同じ本で mohta 氏は「理想の内部コード」を定義してます >(p.198から)。 >しかし、「その際内部コード相互にぶつからない範囲で適当に決め >ておけば良い。たとえ、ぶつかっても、どうせ外部には見えないコー >ドなので、あとから範囲を変更すればどうにでもなる。」(p.199) >とめちゃめちゃ乱暴なのはどうかなあと思うのですが。現実的な範 >囲でISO-2022-INT-*と相互変換できる「適当な」内部コードへの相 >互変換ってできないような気がするんですけど。 citrus projectではiso-2022 familyの内部コードに末尾に添付したようなのを 使っています。 http://citrus.bsdclub.org/index-ja.html >あ、毎回使う範囲を動的に決めれば良いのか。それは画期的だ。 Cで実装されている言語処理系rubyとしては、Cライブラリの提供するwchar_tに 乗っかるのが一番簡単かなと思っているのですが... (OSがどのくらい まともなライブラリを提供しているかに左右される) 自力で全部実装しようと思うと洒落になりませんよ。ほんとに。 itojun /* * mappings: * ASCII (ESC ( B) 00000000 00000000 00000000 0xxxxxxx * iso-8859-1 (ESC , A) 00000000 00000000 00000000 1xxxxxxx * 94 charset (ESC ( F) 0fffffff 00000000 00000000 0xxxxxxx * 94 charset (ESC ( M F) 0fffffff 1mmmmmmm 00000000 0xxxxxxx * 96 charset (ESC , F) 0fffffff 00000000 00000000 1xxxxxxx * 96 charset (ESC , M F) 0fffffff 1mmmmmmm 00000000 1xxxxxxx * 94x94 charset (ESC $ ( F) 0fffffff 00000000 0xxxxxxx 0xxxxxxx * 96x96 charset (ESC $ , F) 0fffffff 00000000 0xxxxxxx 1xxxxxxx * 94x94 charset (ESC & V ESC $ ( F) * 0fffffff 1vvvvvvv 0xxxxxxx 0xxxxxxx * 94x94x94 charset (ESC $ ( F) 0fffffff 0xxxxxxx 0xxxxxxx 0xxxxxxx * 96x96x96 charset (ESC $ , F) 0fffffff 0xxxxxxx 0xxxxxxx 1xxxxxxx */