除了 EBCDIC 之外,还有其他字符集没有空格代码 0x20 吗?我看到一些程序将空格硬编码为 32。我应该始终使用转义序列来表示空格吗?还是硬编码是一个有效的选项?
答案1
在一些编码中,0x40–0x5F 不一定包含 ASCII 兼容字母(例如 Microsoft cp932),但它们都保留了 0x20 的含义。(即使是 JIS X 0208,其中以 0x21 开头的任何内容都不是 ASCII 类的,仍然保留 0x20 作为空格。)
唯一值得注意的例外是UTF-16 / UCS-2,这是一种固定宽度的多字节编码,其中空格被编码为 0x00 20,并且单独的 0x20 可能出现在任意数量的代码点中(例如,Ƞ 在 Unicode 中为 U+0220,在 UTF-16 中编码为 0x02 20)。
幸运的是,由于 0x00,UTF-16 已经是一个特例,因此在任何需要担心 0x20 的地方都不太可能找到它。