MS Word 中的 Alt 代码 - 代码不同但字符相同

MS Word 中的 Alt 代码 - 代码不同但字符相同

为什么在 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,因此请尝试输入17DU+17D然后Alt+X


然而,大多数其他应用程序不会捕获 Alt 代码并使用默认 Windows 行为相反,其中小数值总是模 256(即只取最低有效字节),按住Alt第一个数字键盘键时定义要使用的代码页类型:

  • 如果是numpad 1-9的话DOS 代码页(又称 OEM 代码页)将会被使用

    美国 Windows 上的默认 OEM 代码页是CP437,因此如果你输入Alt+ 144Alt+400Alt+ 656...,那么 CP437 中的代码点 144(É如果你查看上一个链接中的 CP437 表,则为 U+00C9)将被输入,因为656 模 256 = 400 模 256 = 144

  • 如果是numpad 0的话Windows 代码页(又称 ANSI 代码页)将会被使用

    默认情况下,Windows 代码页是CP1252在美国 Windows 上。因此,如果您输入Alt+ 0201Alt+ 0457...,则会输入 CP1252 中的代码点 201,这也是相同的 U+00C9É

    类似地Alt, + 0142Alt+ 0398Alt+ 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名称的值来启用,然后重新启动EnableHexNumpadHKCU\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 。也许更聪明的超级用户可以协助解决此问题。

相关内容