[Gauche-devel-jp] incomplete-string

Back to archive index

Kimura Fuyuki fuyuk****@hadal*****
2002年 11月 16日 (土) 20:21:14 JST


At Fri, 15 Nov 2002 23:27:17 -1000 (HST),
Shiro Kawai <shiro****@lava*****> wrote:
> 
> 不完全な文字列に対する見方が二通りあって、まだ確定していません。

むむ、そうでしたか。(どうりでよくわからないと思った ;)

> 当初は、文字通り「完全ではない」とする見方をしていました。
> 例えば「ほとんど正規のマルチバイト文字列だが一箇所だけおかしな
> バイト列が紛れている」というような場合でも、残りの部分はできる
> だけ正規の文字列として解釈してあげたいなと。
> 
> ただ、次第に実装を進めて行くうちに、不完全な文字列の「正しい
> 解釈」を決めるのが不可能に思えて来たので、いっそのこと不完全な
> 文字列を「バイトストリング」と改名してしまおうか…とも考えて
> います。正規のマルチバイト文字列にならなければあくまでただの
> バイトアレイとして扱うと。

私は基本的に後者のつもりで理解していました。つまり、

complete string == character stream
incomplete string == byte stream (1バイト文字しか扱わない処理系の文字列)

しかしどうも前者のような挙動をしてくれる箇所があるので、こりゃなんでか
なと。不完全な文字列でも内部的に勝手にコード変換したりしてくれそうな気
がしてちょっと使うのが怖かったです。まあ md5 を書いて大丈夫そうなのは
わかりましたが。

個人的にはバイトストリング案に賛成ですが、実際問題ゴミコード混じりのメー
ルなんかが山ほど来ることを考えると、なかなかそう単純化するわけにはいか
ないもしれません。

ゴミが見つかったときに

a. すぐにあきらめてバイトストリングにするモード

b. 不完全な文字列(正規文字とゴミが混在)にするモード

c. 無理矢理完全な文字列にする(内部コーディングに正規化)モード

の三つを用意しておいて、aの後処理のために正規文字列になる部分とゴミ部
分を切り分けて返す関数を提供するとか…めんどうですね、やっぱり。

ここはほかの実装を参考にする手でしょうか。muleとかrubyとか。

-- 
木村 冬樹




Gauche-devel-jp メーリングリストの案内
Back to archive index