我如何阻止发送到PuTTY的字符与其标题/输出发生冲突? 我将在一个运行在MPED上的C++程序发送Windows上的JSON到PuTTY。< /P>
根据json.org,我对字符我如何阻止发送到PuTTY的字符与其标题/输出发生冲突? 我将在一个运行在MPED上的C++程序发送Windows上的JSON到PuTTY。< /P>,c++,json,C++,Json,根据json.org,我对字符\,/,“,\b,\n,\f,\r,\t进行了转义 但我仍然有三个我不明白的怪癖: 窗口标题更改为部分输出。有时 光标跳过“向上”并开始覆盖原来的内容 类似于\n的换行符,但水平位置保持在行上方 我认为(3)可能是\v,但转义并没有帮助,而且JSON规范也没有要求我们转义它 我做错了什么?输出中的某个地方是更改终端硬状态行的字符序列,PuTTY显示为其标题。在许多终端上,该序列是 ESC ] 0 ; TitleString BEL 其中,ESC和BEL是ASCII
\
,/
,“
,\b
,\n
,\f
,\r
,\t
进行了转义
但我仍然有三个我不明白的怪癖:
\n
的换行符,但水平位置保持在行上方\v
,但转义并没有帮助,而且JSON规范也没有要求我们转义它
我做错了什么?输出中的某个地方是更改终端硬状态行的字符序列,PuTTY显示为其标题。在许多终端上,该序列是
ESC ] 0 ; TitleString BEL
其中,ESC
和BEL
是ASCII转义和贝尔字符
另一个奇怪的行为是由相似的序列引起的
我建议您通过
od
或类似的方式运行输出,以查看其中是否有不可打印的字符。输出中的某个字符序列会更改终端的硬状态行,PuTTY显示为其标题。在许多终端上,该序列是
ESC ] 0 ; TitleString BEL
其中,ESC
和BEL
是ASCII转义和贝尔字符
另一个奇怪的行为是由相似的序列引起的
我建议您通过
od
或类似的方式运行输出,以查看其中是否有不可打印的字符。您会发现这不是您的应用程序,而是putty使用的实际终端模拟
有几种方法可以缓解这种情况
1) 如果只是标题让您担心,那么只需禁用远程客户端即可更改标题
打开Putty,进入侧边菜单中的“终端->功能”,在此页面上您将找到“禁用远程控制窗口标题更改”,勾选该选项,您将不再有问题
2) 如果是其他内容,那么您需要在“终端”和“窗口”设置部分进行深入研究
特别是窗口设置有许多地方可以更改,这将影响Putty对其认为是控制代码的响应方式
例如,在Window->Translation中,可以强制远程字符集,或者告诉putty使用“+-=”作为线条图形符号,而不是ms dos box图形集
在“终端->键盘”中,您可以更改putty处理各种传入字符序列的方式
我不知道你在I.t工作了多久,但在windows、HTTP和JSON出现之前,终端执行的所有操作都是由“控制代码”控制的
第一张图表如下:
你可以看到32之前的所有代码都有一个特殊的含义
一些如制表符(Ctrl代码9)和回车符(Ctrl代码13)至今仍在使用,但许多并没有使用
参见此处:和此处:这两个位置通常用于制作BBS系统的基于文本的艺术作品(参见此处:)
其结果是一种混搭,像Putty这样的终端仍然会在今天的丰富多媒体世界中尝试解释
像JSON这样的东西会产生字符序列,有时会让Putty误以为它正在接收要处理的字符串,但缺少数据。就像任何体面的终端模拟一样,它通常会尽可能地处理接收到的内容,有时会出错
这就是为什么我认为,解决您的问题的方法在于调整终端响应设置,以使putty不会对事情做出如此严厉的反应。您会发现putty使用的不是您的应用程序,而是实际的终端模拟 有几种方法可以缓解这种情况 1) 如果只是标题让您担心,那么只需禁用远程客户端即可更改标题 打开Putty,进入侧边菜单中的“终端->功能”,在此页面上您将找到“禁用远程控制窗口标题更改”,勾选该选项,您将不再有问题 2) 如果是其他内容,那么您需要在“终端”和“窗口”设置部分进行深入研究 特别是窗口设置有许多地方可以更改,这将影响Putty对其认为是控制代码的响应方式 例如,在Window->Translation中,可以强制远程字符集,或者告诉putty使用“+-=”作为线条图形符号,而不是ms dos box图形集 在“终端->键盘”中,您可以更改putty处理各种传入字符序列的方式 我不知道你在I.t工作了多久,但在windows、HTTP和JSON出现之前,终端执行的所有操作都是由“控制代码”控制的 第一张图表如下: 你可以看到32之前的所有代码都有一个特殊的含义 一些如制表符(Ctrl代码9)和回车符(Ctrl代码13)至今仍在使用,但许多并没有使用 参见此处:和此处:这两个位置通常用于制作BBS系统的基于文本的艺术作品(参见此处:) 其结果是一种混搭,像Putty这样的终端仍然会在今天的丰富多媒体世界中尝试解释 像JSON这样的东西会产生字符序列,有时会让Putty误以为它正在接收要处理的字符串,但缺少数据。就像任何体面的终端模拟一样,它通常会尽可能地处理接收到的内容,有时会出错 这就是我为什么这么做的原因