From: "たけ (tk)" Date: 2000-11-02T23:53:29+09:00 Subject: [ruby-dev:11371] Re: Ruby I18N たけ(tk)です。 Yukihiro Matsumoto さん曰く。 》元の文字コードはなにか(つまりどう処理するか)という情報は文字 》列、正規表現それぞれに個別に持ってもらうことになるでしょう。 》文字コードが合わない文字列同士は処理できないことにしようと思 》います。  文字列や正規表現の内部構造と処理方法は次のような感じになると考えていい のでしょうか?。 ┌────────┬──────────┬───────────  │データバッファの│文字コード系の種類の│実際のデータ・・・  │長さ      │IDもしくはポインタ│(生のまま) └────────┴──────────┴───────────  それで、実際の処理は、文字コード系に応じた「一文字取りだしルーティン」 とか「比較ルーティン」とかを呼び出して行う。  * または、文字コード系ごとに「String クラスのサブクラス」とする。  −−  しかしそれだと、  (1) 文字コード系がステートフルや可変長であっても、構わないことにな る。(文字列の一部をカットするのも文字コード系毎のルーティンを呼び出すこ とになるので問題がなくなる。また、入出力も文字コード系毎のルーティンを使 うとすると、その処理系でステートレスに変換して収納しても構わないことにな る)。  (2) 取り出した文字の個々の文字コード(Fixnum)にも「文字コード系の 種類」のデータが付加されていなければならない。(そうでないと、一文字を取 り出した後で「文字コード系が違うので処理を拒否する」ということが出来なく なる)。  (3) それぞれの文字コード毎のルーティンで「他の文字コード系から自分 の文字コード系への変換」ルーティンを用意すると、文字コード系が異なってい ても処理が可能になる。(coerce の文字列への適用?)。  −−  以下のあたりをつらつら読んでいました。 http://www.horagai.com/www/moji/ http://www.horagai.com/www/moji/2000a.htm http://x.jepa.or.jp/jepax/index.html http://hp.vector.co.jp/authors/VA002891/TMEDIT/TMF_SMJK.TXT http://cvs.m17n.org/UTF-2000/ たけ(tk) ggb03124@nifty.ne.jp http://member.nifty.ne.jp/take_tk