我如何阻止发送到PuTTY的字符与其标题/输出发生冲突? 我将在一个运行在MPED上的C++程序发送Windows上的JSON到PuTTY。< /P>

我如何阻止发送到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

根据json.org,我对字符
\
/
\b
\n
\f
\r
\t
进行了转义

但我仍然有三个我不明白的怪癖:

  • 窗口标题更改为部分输出。有时
  • 光标跳过“向上”并开始覆盖原来的内容
  • 类似于
    \n
    的换行符,但水平位置保持在行上方
  • 我认为(3)可能是
    \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误以为它正在接收要处理的字符串,但缺少数据。就像任何体面的终端模拟一样,它通常会尽可能地处理接收到的内容,有时会出错

    这就是我为什么这么做的原因