【发布时间】:2021-06-04 21:40:39
【问题描述】:
我正在寻找使用 APC(应用程序命令)控制字符的应用程序文档示例。我读过 ECMA-48,它的定义如下:
应用程序命令 APC - 应用程序命令
符号:(C1)
表示:09/15 或 ESC 05/15
APC 用作应用程序使用的控制字符串的开始分隔符。后面的命令字符串可能由 00/08 到 00/13 和 02/00 到 07/14 范围内的位组合组成。控制字符串由终止分隔符 STRING TERMINATOR (ST) 关闭。 命令字符串的解释取决于相关的应用程序。
我发现许多现代终端仿真器程序足以识别此控件以通过 ST 抑制 APC 的显示,这似乎与 ECMA 意图相匹配...我正在寻找任何使用“命名空间”的示例" 这可能允许不同的应用程序在命令序列中使用不同的内容。我会对终端仿真器使用 APC 序列执行某些操作的示例特别感兴趣。
示例
const APC = "\x9F"
const ST = "\x9C"
console.log(`Hello world${APC}hidden command${ST}!`)
在终端上显示(Windows 10)
PS > node index.js
Hello world!
“隐藏命令”不显示。这看起来不错,但如果我将输出传送到另一个应用程序,命令字符串就在那里。
有些 shell 似乎对 C1 版本的控制字符有点困惑,我有一些工作要做来记录。
背景
我正在考虑使用 APC 序列来允许将嵌入的数据(例如 JSON 格式)混合到标准输出流中。
【问题讨论】:
-
如果您想将 Unicode 字符用于非标准用途,为什么不使用私人使用区域之一呢?它们适用于任何“依赖于实现”的东西。
-
我认为私人使用区域是用于非标准图形字符的。我将放入 APC 中的字符将是标准 ASCII; JSON 文本都是可打印的。所以我断言这不会是非标准的,而是符合 ECMA(和 ANSI)定义的标准
-
私人使用区域代码点绝对没有标准定义的语义,即标准也没有将它们定义为字形或字符,您可以根据需要使用它们。当然,最广为人知的用途是用于各种非 Unicode 脚本。
-
不,我坚持我的主张,提供UAX #44 表 10 作为支持:控制代码(又名 Cc)根据定义仅限于 C0 和 C1 代码,它们不是真正的字符。私人使用代码(又名 Co)根据定义是字符,这意味着它们是图形的。
标签: unicode control-characters