为什么在 MS Word 中使用这两个 Alt 代码会产生相同的字符?
Alt+0142
Alt+0381
这个角色:Ž
但在我迄今为止尝试过的任何其他程序中(甚至是 MS Excel),}
使用此 Alt 代码时都会生成字符:
Alt+0381
答案1
ALT+0142生成该字符,Ž
因为 142 对应于窗户 1252代码页。
ALT+0381也会产生字符Ž
,因为 381 是 U+017D 的十进制值,与 Unicode 中的该字符相对应。
4 位数字的Alt 代码 从 0 开始产生相应的字符ANSI 代码页 (窗户 1252, 默认情况下)。
最多 3 位数字的Alt 代码 不以 0 开头产生相应的字符OEM 代码页 (代码页 437, 默认情况下)。
所有代码页只有 256 个字符(0 到 255),因此任何大于 255 的 alt 代码都会在 Word 中产生相应的 Unicode 字符。
但是,这不适用于 Excel,它只是计算模 256 的值并生成该字符(在代码页 437 或 1252 中,取决于它有 3 位还是 4 位数字 在 OEM 或 ANSI 代码页中,取决于第一位数字)。请注意,381-256=125,这对应于}
(在 ASCII 中,因此在所有代码页中)。
答案2
Alt 代码组合的结果取决于前台应用程序和第一个数字键盘键
许多应用程序在前台接收输入时对 Alt 代码有特殊处理。例如,有些应用程序只取前 3 位数字,而丢弃其他数字。MS Word 也捕获整个数字序列,但将整个十进制值视为 Unicode 代码点无需模数。写字板也一样。这就是为什么Alt+0381在 Word 中有效,但在大多数其他应用程序中无效。你甚至不需要前缀0
,只需Alt+381就足够了
Word、Wordpad 和其他类似的文本编辑器(如 Libre Office)也有另一种选择,即输入 Unicode 十六进制代码点,然后按Alt+ X,因此请尝试输入17D
或U+17D
然后Alt+X
然而,大多数其他应用程序不会捕获 Alt 代码并使用默认 Windows 行为相反,其中小数值总是模 256(即只取最低有效字节),按住Alt第一个数字键盘键时定义要使用的代码页类型:
如果是numpad 1-9的话DOS 代码页(又称 OEM 代码页)将会被使用
美国 Windows 上的默认 OEM 代码页是CP437,因此如果你输入Alt+ 144、Alt+400或Alt+ 656...,那么 CP437 中的代码点 144(
É
如果你查看上一个链接中的 CP437 表,则为 U+00C9)将被输入,因为656 模 256 = 400 模 256 = 144如果是numpad 0的话Windows 代码页(又称 ANSI 代码页)将会被使用
默认情况下,Windows 代码页是CP1252在美国 Windows 上。因此,如果您输入Alt+ 0201、Alt+ 0457...,则会输入 CP1252 中的代码点 201,这也是相同的 U+00C9
É
类似地Alt, + 0142,Alt+ 0398,Alt+ 0654... 都产生 U+017D 字符
Ž
,即 CP1252 中的代码点 142,因为654 模 256 = 398 模 256 = 142同样,Alt+0381产生代码点 381 mod 256 = 125,即
{
事实上 Alt 代码起源于 DOS 时代,人们已经习惯了 DOS 中的 Alt 代码,以至于微软在 Windows 中使用 ANSI 代码页时无法破解它,必须用前缀来区分
0
两者如果是,numpad +则输入是十六进制UCS2
输入Alt++17D可获得相同的
Ž
字符请注意,这需要十六进制数字键盘通过在注册表项中设置
REG_SZ
名称的值来启用,然后重新启动EnableHexNumpad
HKCU\Control Panel\Input Method
也可以看看
答案3
看起来 Word 将 ALT+0381 解释为 Unicode U+017D,这是十进制表示 381
https://en.wikipedia.org/wiki/List_of_Unicode_characters显示:
U+017D Ž 381 Ž Latin Capital Letter Z with caron 0317
正常输入 Unicode 字符会得到同样的结果。第一种类型:
017D
然后按 Alt+x
您可以在https://www.alt-codes.net/在 Word 和 Notepad++ 中是相同的。我不认为有 ASCII 字符 0381,我不确定为什么其他程序会将其解释为}
。正确的代码应该是 alt+125 。也许更聪明的超级用户可以协助解决此问题。