2013-06-22 70 views
0

我使用PuTTY連接到Linux機器。如何顯示超出範圍的ascii字符?

在Linux機器上,我正在運行一個Python腳本,它接受一系列字符並按順序打印每個字符及其索引。

我列表中的某些字符超出了可打印ascii字符的範圍。這些不規則的字符正在破壞我的輸出。有時他們根本不會出現,而有時他們實際上刪除了大量有效文本。

我以爲我可以通過關閉緩衝來糾正這種情況,但是當我使用python -u標誌運行腳本時,問題仍然會發生。

有趣的是,當我將輸入輸入到較少的閱讀器時,不會發生此問題。不太常見的不規則字符如下所示:<A9>,<A7>,^V,^@等。沒有文字塊丟失。

我不確定我的問題在哪裏。有沒有辦法配置我的終端,以便unpiped輸出仍然會顯示不規則的字符?

回答

1

已將less配置爲將原始字符顯示爲表示這些不可打印字符的ASCII字符組合; -r--raw-control-chars命令行開關執行此操作:

導致顯示「原始」控制字符。缺省值是使用插入符號顯示控制字符;例如,控件-A(八進制001)顯示爲「^ A」。警告:使用-r選項時,較少不能跟蹤屏幕的實際外觀(因爲這取決於屏幕如何響應每種類型的控制字符)。因此,可能導致各種顯示問題,例如長線被錯誤地分割。

這是一個特殊的less功能。

如果你想對你的Python程序做同樣的事情,你需要自己做同樣的翻譯。創建一個將'特殊'字符映射爲轉義碼的映射:

nonprintable = { 
    '\x00': '^@', 
    '\x01': '^A', 
    '\x02': '^B', 
    '\x03': '^C', 
    '\x04': '^D', 
    # etc. 
} 

for i in range(128): 
    character = chr(i) 
    print i, nonprintable.get(character, character) 
+0

具有完美的意義。另外,感謝您的創意python解決方案! – BitPusher16

0

是遠程機器可能設置爲unicode(現代Linux發行版),然後確保您運行的還有unicode設置的putty。