背景
有时候需要程序解析终端特殊字符,如记录审计日志等。
如果直接将特殊字符记录,可能会出现各种乱码问题。
实现
使用terminal.js实现。
(使用各种nodejs api发现实现不了,如果可以,请告诉我~)
下面示例展示了与终端socket实时交互,用户输入的完整指令(由socket服务端返回的字符串拼接起来),
比如用户按下退格、使用Tab自动补充等,这些都是有特定的符号来传输。
而我们可能需要的只是最后他回车后的最终结果,如:
用户在终端想要输入最终指令:cat package.json
,但中途按了几次退格还有使用tab自动补充,故用户的输入完整内容就是str
的内容,但我们只要最终的指令:
即最终我们记录JSON.stringify(line)
就完事了,不会乱码。
提醒
开发中使用控制台输出(如console.log),一般控制台打印出来的是被自动解析终端特殊字符。
强烈建议如果要打印这类字符变量,加上JSON.stringify();