c++ - 如何阻止发送到 PuTTY 的字符破坏其标题/输出?

标签 c++ json

我正在从 mbed 上运行的 C++ 程序向 Windows 上的 PuTTY 发送 JSON。

我已经转义了字符 \, /, ", \b, \n\f\r\t 根据 json.org。

但是我还有三个不明白的怪癖:

  1. 窗口标题更改为部分输出。有时。
  2. 光标跳过“向上”并开始覆盖那里的内容。
  3. 类似于 \n 的换行符,但水平位置保持在行上方。

我认为 (3) 可能是 \v,但是转义它并没有帮助,而且 JSON 规范没有要求我们转义它。

我做错了什么?

最佳答案

您会发现这不是您的应用程序,而是 putty 使用的实际终端仿真。

有几种方法可以缓解这种情况。

1) 如果您担心的只是标题搞砸了,那么只需禁用远程客户端更改标题即可。

打开Putty,在侧边菜单中进入“终端->功能”,在这个页面上你会找到“禁用远程控制窗口标题更改”,勾选它,你就不会再有问题了。

2) 如果还有更多内容,那么您需要深入研究“终端”和“窗口”设置部分。

尤其是窗口设置有许多您可以更改的地方,这些地方将影响 Putty 如何响应它认为是控制代码的内容。

例如在 Window->Translation 中,您可以强制使用远程字符集,或者告诉 putty 使用“+-=”作为画线符号而不是 ms-dos 框画集。

在“Terminal->Keyboard”中,您可以更改 putty 处理各种传入字符序列的方式。

我不知道你在 IT 行业工作了多久,但早在 Windows、HTTP 和 JSON 出现之前,终端执行的所有操作都由“控制代码”控制

这里的第一个图表:Ascii Chart

可以看出32之前的所有代码都有特殊含义。

有些诸如制表符(Ctrl 代码 9)和回车符(Ctrl 代码 13)今天仍在使用,但很多已经不使用了。添加到此 ANSI 控制代码标准

参见此处:Ansi Escape Codes这里:VT100 codes它经常用于为 BBS 系统制作基于文本的艺术作品(参见此处:Ansi Art on Wikipedia)

结果有点混搭,像 Putty 这样的终端仍将尝试在当今丰富的多媒体世界中进行解释。

像 JSON 这样的东西可以产生字符序列,有时会使 Putty 误以为它正在接收要对其执行操作的字符串,但其中缺少数据。与任何体面的终端仿真一样,它通常会尽其所能处理接收到的信息,但有时也会出错。

这就是为什么我认为,您的问题的解决方案在于调整终端响应设置等内容,以使腻子不会对事物做出如此严厉的 react 。

关于c++ - 如何阻止发送到 PuTTY 的字符破坏其标题/输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24532346/

相关文章:

c++ - 在 C++ 中使用正则表达式出错

c++ - 具有 >50 个(移动) Actor 的 Vtk Qt 场景

javascript - 我如何转换 d3 force 指令图以与 angularjs 一起使用?

java - 解码无效 JSON

java - MapEditor 导出为 JSON - 对象已加密?

c++ - 如何迭代 C++ 字符串 vector ?

c++ - Makefile:在全局变量初始化之前通过 'make all' 命令运行 bash 脚本

c++ - 如何命名空间 C++ 头文件?

json - Alamofire 错误域=NSURLErrorDomain 代码=-999 "cancelled"

java - 使用Java从JSONArray获取元素和属性