作者: Koichi Yamamoto
日時: 2002/3/3(01:39)
こんにちは、山本です。
# もしかしたらTcl/Tk-MLがまだ有効みたいですので、
# フォローのためにそちらにもpostしてみます。

Tcl/Tk8.3に潜在しているiso2022-jp関連のバグで、
次のようなバグがあることを書いたのですが、
これの修正方法が判明しましたので、お知らせします。

"Koichi Yamamoto <yamako@...>"さんは書きました:
> [tcltk:155]にも書いたのですが、iso2022-jp encodingのチャンネルから
> getsコマンドで文字列を読み込もうとすると、約90バイト目辺りから

ちなみに、約90バイトというのはUTF-8で表現したときのサイズです。
つまり、JIS文字列の場合、約60バイト目からです。
全角文字にして約30文字目以降で文字化けが起こりますから、
メール受信スクリプトをTclで書くと痛い目にあう可能性があります。

> 文字化けが発生する、という問題もあります。これはTcl_GetsObj関数を
> 修正しないといけません。

Tcl_GetObj関数で使用しているサブルーチンFilterInputBytes関数の
中にあるTcl_ExternalToUtf関数の呼び出し後に次の行を挿入すれば
この文字化けが発生しなくなります。

    statePtr->inputEncodingFlags &= ~TCL_ENCODING_START;

後で、田口さんの作成したiso2022-jpパッチの中に追加して
私のサイトで公開しておきます。
# これで少しは安心してiso2022-jpが使えるようになる、かな?

--
Koichi Yamamoto, 
http://www3.ocn.ne.jp/~yamako/