我试图理解维基百科页面上的以下解释:
ASCII 和 JISCII 标点符号(此处以黄色背景显示)可能 如果满足以下条件,请使用半角和全角表单块的替代映射: 用于将 JIS X 0208 与 ASCII 或与 JIS X 组合的编码 0201,例如 Shift JIS、EUC-JP 或 ISO 2022-JP。在我的 ubuntu 系统上我可以验证:
$ printf "\x1b\x24\x42\x24\x22\x21\x40\n" | hexdump -C
00000000 1b 24 42 24 22 21 40 0a |.$B$"!@.|
00000008
给予:
$ printf "\x1b\x24\x42\x24\x22\x21\x40\n" | iconv -f iso-2022-jp -t utf8
あ\
我们可以使用类似以下内容验证最后一个字符是 U+FF3C FULLWIDTH REVERSE SOLIDUS:
$ printf "\x1b\x24\x42\x24\x22\x21\x40\n" | iconv -f iso-2022-jp -t utf16be | hexdump -C
00000000 30 42 ff 3c 00 0a |0B.<..|
00000006
我的问题是如何切换到“半角形式”?我的问题是关于 JIS X 208 而不是 iso-2022-jp,我想了解根据 JIS X 208 规范切换到半角的正确转义字符是什么。
JIS X 201 没有
\
(反向实线)字符。它被
¥
(日元符号)取代。 (令 C 程序员非常沮丧......)所以我不希望有一种方法可以在 JIS X 208 中对假设的“HALFWIDTH REVERSE SOLIDUS”进行编码。并且它在 Unicode 中不存在(这些与事实)。可以在
IBM 代码页 896 中将其编码为 0x63,或在其他一些 IBM 日语代码页中。但我没想到它会出现在 JIS X 208 中。