encoding - 将 int 列表解码为 utf8 时出现问题
问题描述
我有这三个来自 ascii 表的十进制字符代码列表。
[27, 91, 50, 74, 27, 91, 109, 27, 91, 72, 77, 105, 99, 114, 111, 115, 111, 102, 116, 32, 87, 105, 110, 100, 111, 119, 115, 32, 91, 86, 101, 114, 115, 105, 111, 110, 32, 49, 48, 46, 48, 46, 49, 57, 48, 52, 49, 46, 51, 56, 56, 93, 27, 93, 48, 59, 67, 58, 92, 87, 73, 78, 68, 79, 87, 83, 92, 115, 121, 115, 116, 101, 109, 51, 50, 92, 99, 111, 110, 104, 111, 115, 116, 46, 101, 120, 101, 7, 27, 91, 63, 50, 53, 104, 10]
[40, 99, 41, 32, 50, 48, 50, 48, 32, 77, 105, 99, 114, 111, 115, 111, 102, 116, 32, 67, 111, 114, 112, 111, 114, 97, 116, 105, 111, 110, 46, 32, 65, 108, 108, 32, 114, 105, 103, 104, 116, 115, 32, 114, 101, 115, 101, 114, 118, 101, 100, 46, 10]
[27, 91, 53, 50, 88, 10]
当我解码为 UTF-8 时,我有这个。
[2J[m[HMicrosoft Windows [Version 10.0.19041.388]]0;C:\WINDOWS\system32\conhost.exe[?25h
(c) 2020 Microsoft Corporation. All rights reserved.
[52X
我怎样才能避免这些特殊字符?我注意到“escape”(27)字符导致它。
解决方案
这些是ANSI 转义码。它们控制文本终端和终端仿真器的行为和外观:例如,它们可以清除屏幕、移动光标或更改文本颜色。
这些代码可能会变得非常复杂,尤其是样式格式,但是您给出的示例中的代码很容易识别并使用正则表达式删除。您无需标记编程语言,但您可以在 JavaScript 中执行此操作。
var with_ansi_escapes = "\033[2J\033[m\033[HHello"
var without_ansi_escapes = with_ansi_escapes.replace(/\033\[\d*[A-Za-z]/g, "")
推荐阅读
- python-3.x - 获取熊猫数据框中的最大值
- angular - 从 Angular dist 文件夹中检索所有丢失的 HTML 文件
- java - 带有 GUI 的二次公式只返回 NaN
- javascript - 无法向 Leaflet.js 热图添加点
- ios - 如何在编辑时根据 TextField 内容更改标签文本
- javascript - Uncaught (in promise) SyntaxError: json fetch 后输入意外结束
- javascript - 数据模板占位符的资源
- javascript - 使用 `apply` 更改排序功能
- mysql - 连接丢失服务器关闭连接 - 致命错误后无法排队查询
- angularjs - 自定义指令中的 AngularJS 表单在数据绑定后未更新