d844277c5702758dcd8ef9603a2db5fd4996885c にてマージしました。報告・パッチ制作ありがとうございます。
Reply To deton
JIS X 0201がESC(Iでエンコードされている際に「ス」が含まれていると、 「=」になる現象に気付きました。 -m0を指定すると発生しません。 {{{ % printf '\x1b(I38=BG' | nkf -w ウク=ツヌ }}} とりあえず、以下の変更をすれば回避できるようです。 {{{ diff --git a/nkf.c b/nkf.c index a16b142..89c4643 100644 --- a/nkf.c +++ b/nkf.c @@ -5683,6 +5683,7 @@ kanji_convert(FILE *f) else if (c1 == 'I') { /* JIS X 0201 Katakana */ set_input_mode(JIS_X_0201_1976_K); + shift_mode = 1; SKIP; } else if (c1 == 'B' || c1 == 'J' || c1 == 'H') { diff --git a/nkf_test.pl b/nkf_test.pl index 79cfea6..7279cd2 100644 --- a/nkf_test.pl +++ b/nkf_test.pl @@ -527,6 +527,17 @@ printf "%-40s", "X0201 output: EUC"; &test("$nkf -xe",$example{'x0201.jis'},$example{'x0201.euc'}); printf "%-40s", "X0201 output: UTF8"; &test("$nkf -xw",$example{'x0201.jis'},$example{'x0201.utf'}); +# test_data/x0201jis= + +$example{'test_data/x0201jis=.ans'} = unpack('u',<<'eofeof'); +MH:*CI*6FIZBIJJNLK:ZOL+&RL[2UMK>XN;J[O+VO\#!PL/$Q<;'R,G*R\S- +2SL_0T=+3U-76U]C9VMO<W=[? +eofeof + +printf "%-40s", "X0201 JIS contains '='"; + &test("$nkf -xs", + "\x1b(I!\"#\$%&'()*+,-./0123456789:;<=>?\@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]_\x1b(B", + $example{'test_data/x0201jis=.ans'}); # MIME decode }}}
JIS X 0201がESC(Iでエンコードされている際に「ス」が含まれていると、 「=」になる現象に気付きました。 -m0を指定すると発生しません。
とりあえず、以下の変更をすれば回避できるようです。