处理终端pty乱码的过程
【摘要】 背景使用 github.com/creack/pty 开发远程终端,实现之后发现 websocket 接口返回结果的结尾包含了很多字符。想复制下来查询发现复制不了,然后截图放大发现是一堆的 NUL。 分析NUL 是ASCII中的控制符0x00,是空值的意思,代表啥也没有,C里面终结字符串。分析代码发现这两行:originmsg := make([]byte, 1024)_, err :=...
背景
使用 github.com/creack/pty 开发远程终端,实现之后发现 websocket 接口返回结果的结尾包含了很多字符。
想复制下来查询发现复制不了,然后截图放大发现是一堆的 NUL
。
分析
NUL
是ASCII中的控制符0x00
,是空值的意思,代表啥也没有,C里面终结字符串。
分析代码发现这两行:
originmsg := make([]byte, 1024)
_, err := ptySession.Read(originmsg)
直接把终端输出读到了buffer中,同时也读到了这些NUL
字符。
解决
# 将 NUL 空值替换为空字符串
msg := bytes.ReplaceAll(originmsg, []byte{0}, []byte(""))
参考
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)