From: matz@... (Yukihiro Matsumoto) Date: 1998-06-09T14:29:14+09:00 Subject: [ruby-dev:2817] Re: Kconv.guess まつもと ゆきひろです In message "[ruby-dev:2815] Kconv.guess" on 98/06/09, WATANABE Hirofumi writes: |わたなべです. | |Kconv.guess がEUC の文字列で「ミ」から「ワ」までを含んでいると, |SJIS と判断してしまいます. 以下のパッチはどうでしょう.問題の文字列(なにをやってたか推 測できそう…^^;;;)はunknownと判定されます. diff -w -u -1 -r1.1.1.2.2.2 kconv.c --- kconv.c 1998/02/20 08:28:51 1.1.1.2.2.2 +++ kconv.c 1998/06/09 05:25:50 @@ -1910,3 +1910,6 @@ } - if (*p == 0x8e) { + if (0x8f <= *p && *p <= 0x9f) { + return INT2FIX(_SJIS); + } + if (*p == 0x8e) { /* SS2 */ INCR; @@ -1917,3 +1920,3 @@ } - if (0xa1 <= *p && *p <= 0xdf) { + else if (0xa1 <= *p && *p <= 0xdf) { INCR; @@ -1922,5 +1925,5 @@ if (0xe0 <= *p && *p <= 0xef) { - while (*p >= 0x40) { + while (p < pend && *p >= 0x40) { if (*p >= 0x81) { - if (0x8d <= *p || (0x8f <= *p && *p <= 0x9f)) { + if (*p <= 0x8d || (0x8f <= *p && *p <= 0x9f)) { return INT2FIX(_SJIS); @@ -1931,5 +1934,6 @@ } + INCR; } } - if (*p <= 0x9f) { + else if (*p <= 0x9f) { return INT2FIX(_SJIS); @@ -1937,6 +1941,6 @@ } - if (0xf0 <= *p && *p <= 0xfe) { + else if (0xf0 <= *p && *p <= 0xfe) { return INT2FIX(_EUC); } - if (0xe0 <= *p && *p <= 0xef) { + else if (0xe0 <= *p && *p <= 0xef) { INCR;