python - 数据打印时防止终端字符集切换

标签 python bash raspberry-pi xbee

我正在运行一个控制台应用程序,它从房子周围的各种传感器获取数据。有时传输会中断,因此数据包没有意义。发生这种情况时,数据包的内容将输出到终端 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)

产量

enter image description here

(顺便说一句,输入 reset 将重置终端。)

关于python - 数据打印时防止终端字符集切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15814087/

相关文章:

python - Opencv imshow 不创建窗口

python - python 中的监听器 - Telegram

python - 有没有办法让 vim 以 79 个字符自动包装 python 字符串?

python - "tf.train.replica_device_setter"是如何工作的?

python - 在 Python 中使用泛型动态键入子类

c - bash 中程序的陷阱终止

c# - Mono 使用错误的当前目录执行程序

linux - 将 LINUX 中的一个大文件拆分为多个小文件(每个小于 100MB),在特定行处使用模式匹配进行拆分

Bash:备份/home/中的所有用户并将其放置到username.tar.gz

Python 3 一起加入代码 - Raspberry Pi