svnno****@sourc*****
svnno****@sourc*****
2017年 2月 23日 (木) 21:04:20 JST
Revision: 6613 http://sourceforge.jp/projects/ttssh2/scm/svn/commits/6613 Author: doda Date: 2017-02-23 21:04:20 +0900 (Thu, 23 Feb 2017) Log Message: ----------- UTF-8 設定時に壊れたシーケンスを受けた後に文字化けする事への対処 Ticket:36938 問題の環境ではたまに UTF-8 としては正しく無いバイト列を送って来ている。 この壊れたシーケンスに SS2(0x8E) が含まれる事がある。 4.92 までは SS2 は無視されていたが、UTF-8 で JIS 文字列を表示できる ように変更した結果、SS2 が処理されるようになった。 SS2 は通常は次の文字のみが対象となるが、端末IDが VT100 系の時は MSB が 落とされて SO として扱われる。その結果、GL に G1 が呼び出された状態と なり、以降に続く文字列がデフォルトで G1 に指示されている半角カナとして 表示されていた。 とりあえずは UTF-8 設定時は SS2 / SS3 を無視して ? として表示するように 変更して対処。ちゃんとした対応は後で考える。 Lang が UTF-8 設定の時は 4.92 とそれ以前でも同様の問題が起きていた。 この場合は G1 が DEC 特殊文字となっているので、それで表示される。 https://osdn.net/ticket/browse.php?group_id=1412&tid=36938 Modified Paths: -------------- trunk/doc/en/html/about/history.html trunk/doc/ja/html/about/history.html trunk/teraterm/teraterm/vtterm.c -------------- next part -------------- Modified: trunk/doc/en/html/about/history.html =================================================================== --- trunk/doc/en/html/about/history.html 2017-02-23 12:04:11 UTC (rev 6612) +++ trunk/doc/en/html/about/history.html 2017-02-23 12:04:20 UTC (rev 6613) @@ -48,6 +48,7 @@ <ul> <li>When Restore setup is called, the AlphaBlend can not be restored immediately.</li> <li>When Paste<CR> works, the end of data will be added invalid character.</li> + <!-- li>\x8E\xF3\x90M\x8A\xBF\x8E\x9A\x83R\x81[\x83h\x82\xAA UTF-8 \x90ݒ\xE8\x82̎\x9E\x82ɁAUTF-8 \x82Ƃ\xB5\x82Ă͐\xB3\x82\xB5\x82\xAD\x82Ȃ\xA2\x89\xF3\x82ꂽ\x83o\x83C\x83g\x97\xF1\x82\xF0\x8E\xF3\x90M\x82\xB5\x82\xBD\x8C\xE3\x82ɕ\xB6\x8E\x9A\x89\xBB\x82\xAF\x82\xAA\x8BN\x82\xAB\x82\xE9\x96\xE2\x91\xE8\x82\xF0>\x8FC\x90\xB3\x82\xB5\x82\xBD\x81B</li --> </ul> </li> Modified: trunk/doc/ja/html/about/history.html =================================================================== --- trunk/doc/ja/html/about/history.html 2017-02-23 12:04:11 UTC (rev 6612) +++ trunk/doc/ja/html/about/history.html 2017-02-23 12:04:20 UTC (rev 6613) @@ -48,6 +48,7 @@ <ul> <li>Restore setup\x82\xC5AlphaBlend\x82\xAA\x91\xA6\x8E\x9E\x94\xBD\x89f\x82\xB3\x82\xEA\x82Ȃ\xA2\x96\xE2\x91\xE8\x82\xF0\x8FC\x90\xB3\x82\xB5\x82\xBD\x81B</li> <li>\x93\\x82\xE8\x95t\x82\xAF<CR>\x82ŁA\x83f\x81[\x83^\x82̖\x96\x94\xF6\x82ɃS\x83~\x82\xAA\x95t\x82\xAD\x96\xE2\x91\xE8\x82\xF0\x8FC\x90\xB3\x82\xB5\x82\xBD\x81B</li> + <li>\x8E\xF3\x90M\x8A\xBF\x8E\x9A\x83R\x81[\x83h\x82\xAA UTF-8 \x90ݒ\xE8\x82̎\x9E\x82ɁAUTF-8 \x82Ƃ\xB5\x82Ă͐\xB3\x82\xB5\x82\xAD\x82Ȃ\xA2\x89\xF3\x82ꂽ\x83o\x83C\x83g\x97\xF1\x82\xF0\x8E\xF3\x90M\x82\xB5\x82\xBD\x8C\xE3\x82ɕ\xB6\x8E\x9A\x89\xBB\x82\xAF\x82\xAA\x8BN\x82\xAB\x82\xE9\x96\xE2\x91\xE8\x82\xF0\x8FC\x90\xB3\x82\xB5\x82\xBD\x81B</li> </ul> </li> Modified: trunk/teraterm/teraterm/vtterm.c =================================================================== --- trunk/teraterm/teraterm/vtterm.c 2017-02-23 12:04:11 UTC (rev 6612) +++ trunk/teraterm/teraterm/vtterm.c 2017-02-23 12:04:20 UTC (rev 6613) @@ -5050,19 +5050,29 @@ ParseControl(b); } else if (b==0x8E) { // SS2 - if (ts.KanjiCode==IdEUC) { + switch (ts.KanjiCode) { + case IdEUC: EUCkanaIn = TRUE; - } - else { + break; + case IdUTF8: + case IdUTF8m: + PutChar('?'); + break; + default: ParseControl(b); } } else if (b==0x8F) { // SS3 - if (ts.KanjiCode==IdEUC) { + switch (ts.KanjiCode) { + case IdEUC: EUCcount = 2; EUCsupIn = TRUE; - } - else { + break; + case IdUTF8: + case IdUTF8m: + PutChar('?'); + break; + default: ParseControl(b); } } @@ -5183,6 +5193,8 @@ //Kanji = 0; //PutKanji(b); PutChar(b); + } else if ((b==0x8E) || (b==0x8F)) { + PutChar('?'); } else if ((b>=0x80) && (b<=0x9F)) { ParseControl(b); } else if (b>=0xA0) {