[Ttssh2-commit] [6613] UTF-8 設定時に壊れたシーケンスを受けた後に文字化けする事への対処 Ticket :36938

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&lt;CR&gt; 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&lt;CR&gt;\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) {



Ttssh2-commit メーリングリストの案内