在 Windows 11 中设置代码页 1252 仍然会在终端中得到 cp 850

在 Windows 11 中设置代码页 1252 仍然会在终端中得到 cp 850

在 Windows 11 设备上,我将国际设置(运行“intl.cpl”)设置为意大利语,用于非 Unicode 应用程序。现在,这导致 WinMerge 等应用程序猜测代码页1252,从西欧人的角度来看,这看起来不错。写字板也是如此。

但是,我运行的任何终端应用程序(Windows Terminal、cmd.exe、TCC/LE)仍然以 cp 开头850(DOS 多语言拉丁语 I),重音字母有所不同。

此外,我仍然可以CHCP 1252在每个控制台上这样做,但这不是一种奇怪的行为吗?


编辑:为了增加乐趣,如果我从 cmd.exe 或 TCC/LE 运行bash重音字母,它看起来是正确的但是当我退出回到上一个命令处理器时,我发现代码页已经切换到 cp 858(无论如何不是有 1252 个重音字母)......

答案1

不,Windows 控制台一直都是这种情况,因为它的根源实际上是 NT 时代之前的“虚拟化 MS-DOS”窗口。

与 GUI 应用程序类似,Windows NT 中的控制台有一组单独的字符型-API,程序可以使用这些API直接输出Unicode文本,而无需进行任何代码页转换。

(或者,在 Windows 10 及更高版本中,启用使用 UTF-8(65001)作为非宽 API 的“ANSI”代码页的选项也会选择 UTF-8 作为“OEM”控制台代码页。)

答案2

更改系统区域设置可能会有所帮助在 Windows 11 上 -> 开始 -> 输入控制面板-> 更改日期、时间或数字格式 -> 管理 -> 更改系统区域设置 -> 俄语

在此处输入图片描述

在此处输入图片描述

相关内容