Character-Encoding
stty 輸出中的字元是如何編碼的?
我
stty --all
在一個終端上執行,該終端已被一個行為不良的程序重新配置,該程序在將我的終端恢復到其原始設置之前退出。部分輸出內容如下:eol = M-^?;
. 這是什麼編碼?這個字元序列是什麼意思?手冊頁有這樣的說明,大概是為那些了解先驗的人準備的:
在設置中,CHAR 是按字面意思表示的,或編碼為 ^c、0x37、0177 或 127;特殊值 ^- 或 undef 用於禁用特殊字元。
這
M-
意味著設置了高位,因此在字元編碼中添加“0x80”。表示“
^?
DEL”字元,所以 0x7F。將兩者相加,我們得到 0xFF。
我們可以測試一下:
$ stty -a | grep -w eol | sed 's/.*; //' eol = <undef>; $ stty eol 0xff $ stty -a | grep -w eol | sed 's/.*; //' eol = M-^?;
控製字元及其插入符號的完整列表可在關於 ASCII 的 Wikipedia 文章的控制程式碼圖表部分中找到。