我正在运行一个控制台应用程序,它从房子周围的各种传感器获取数据。有时传输会中断,因此数据包没有意义。发生这种情况时,数据包的内容将输出到终端 session 。 然而,发生的事情是,在输出错误数据包时,它包含的字符改变了当前终端窗口的字符集,将任何文本(数字除外)呈现为不可读的乱码。
在显示错误数据包之前过滤错误数据包同时保留大部分特殊字符的最佳方法是什么?可以改变终端行为的序列到底是什么?
我还想补充一点,除了困惑的输出,应用程序仍然可以正常工作。
最佳答案
您的终端可能正在响应 ANSI escape codes .
为了防止数据无意中影响终端,您可以打印数据的 repr
,而不是数据本身:
例如,
good = 'hello'
bad = '\033[41mRED'
print('{!r}'.format(good))
print('{!r}'.format(bad))
产量
'hello'
'\x1b[41mRED'
鉴于
print(good)
print(bad)
产量
(顺便说一句,输入 reset
将重置终端。)
关于python - 数据打印时防止终端字符集切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15814087/