不正な UTF-8 受信時の動作
Eröffnet am: 2023-06-13 00:36
Letztes Update: 2023-07-08 01:34
Auswertung: | zmatsuo | Verantwortlicher: | zmatsuo |
---|---|---|---|
Priorität: | 5 - Mittel | Meilenstein: | Tera Term 5.0 |
Typ: | Funktionsanfragen | Schweregrad: | 5 - Mittel |
Komponente: | Tera Term | Status: | Offen [Owner assigned] |
Lösung | Keine |
Einzelheiten
(ticket #17226から発展したチケットです)
TERATERM.INIのTera TermセクションにFallbackToCP932=ON/OFF設定がありま す。これは、不正な UTF-8 を受信したとき、日本語設定の時は CP932(Shift_JIS)としてあつかう(Fallback)することで設定ミスによる文字化 けを減らそうとするもので、デフォルトはOFFです。
ticket #17226の修正でも不正なUTF-8を受信した場合、ISO8859-1にFallback していました。
(文字コードを変換する先がないので、そのまま出力していて、 0xffまでの範囲ではUnicodeはISO8859-1と同じなのでFallbackしていたことに なります)
Fallbackするかしないかは(FallbackToCP932が設定であったように)ユーザー が決められるようにしたほうが良いと思います。
Fallbackする場合の動作は妥当そうな文字コードを受信したとして処理する (日本語環境の時CP932、英語環境の時ISO8859-1など)方法か、ユーザーが指定 する(CP932へFallbackなどと指定する)方法が思いつきます。どちらが良いで しょうか?
Fallbackしない場合の動作は次のような候補が考えられます。
- "?"を出力
- U+2592 MEDIUM SHADE を出力 (PuTTY)
- 何も表示しない (conhost.exe)
- U+FFFD REPLACEMENT CHARACTER を出力(Windows Terminal)
これもユーザーが選べるのがよいでしょうか。 (echo -e "\xc0" として各端末ソフトでテストしました)
多分「Fallbackしない、"?"などの何らかの文字を出力する」というのが 一番よくつかわれる設定になるのではないかと思います。
まずは、Fallbackしない、不正なUTF-8を受信したこと後を示す文字を出力で きるように修正しようと思います。
Kommentar
INIファイルへ書き込みができないと問題が出る場合があること理解しました。 ありがとうございます。
セッションの複製はなかなか難しい処理だな思っています。