Terminal.app 字符集更改——完全難以辨認

Terminal.app 字符集更改——完全難以辨認

我剛剛ssh進入我的伺服器(Ubuntu 10.04.2),然後我運行aptitude(以交互模式)。一旦我按下一個鍵(我相信是其中一個字母g),它就會變成這樣(不僅僅是 SSH 會話;這種行為在我終止會話後繼續存在ssh):

第 1 學期

第 2 學期

我可以重新連接,一切都會好起來的,但是當我aptitude再次運行時,會發生同樣的問題(但奇怪的是,它包含在內部aptitude)。

有人知道會發生什麼事嗎?如果有幫助,我正在screen使用byobu設定檔運行,我的$TERMis screen-bce,並且我Terminal.app在 10.6.7 上使用。

答案1

您可以使用該命令reset恢復正常終端。

至於為什麼會發生這種情況 - 不知何故,您的終端正在獲取二進位資料而不是 ASCII。

答案2

我意識到這個線程已經有將近一年的歷史了,但是由於我自己在使用“cat”在Apple的Terminal.app中顯示可執行檔的內容後剛剛遇到這個問題,我認為這種情況也可能會影響未來的用戶。

無論如何,據我所知,奇怪的字元出現在 ASCII「移出」字元(十進位 14,0x0E)列印之後。 (嗯,“打印”這個詞可能不合適,因為至少對於 Terminal.app 來說,這不是一個可打印的字符,但我希望你明白我的意思。)幸運的是,如果 ASCII “打印“shift in ”字元(十進制15,0x0F)。

換句話說,如果有人寫了一個 C 程序,例如...

#include <stdio.h>
int main() {
   printf( "\x0F" );
   return 0;
}

它應該會讓一切恢復正常。在不同的語言中或在 bash shell 中可能有一種更簡單的方法,但希望您能理解。

顯然,這種奇怪的行為不是一個錯誤,而是一個模糊的(至少對我來說)功能。當我搜尋資訊時,我被引導至 ISO 2022,這似乎是終端所做工作的基礎。這裡是關於 ISO/IEC 2022 的維基百科文章

我希望這篇文章對大家有所幫助,因為奇怪的人物背後的謎團已經被弄清楚了。

答案3

選單項目

終端 > Shell > 發送重置

將終端狀態重設為預設值(包括字元集),從而解決了此特定問題。

相關內容