こんにちは、山本です。
# もしかしたら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/