“为非 Unicode 程序选择语言...”对话框的真正含义是什么?

Jos*_*Fox 7 language regional-settings windows-xp

WinXP和Win2003中控制面板->区域设置->高级中的“选择一种语言以匹配您要使用的非Unicode程序的语言版本”对话框的真正含义是什么?

根据对话框文本,Windows 将使用它来显示菜单等资源字符串。文本文件的处理是特定于应用程序的,因此此设置不会影响它。

但是我可以期待这个设置的任何其他行为变化吗?对更改此设置时实际发生的情况有任何见解吗?

编辑:访问值的内部(例如,Windows API)方式是什么?

Lef*_*ium 7

快速回答: Windows 使用此设置作为在旧的 8 位 ASCII 字符和现代 16 位 Unicode 字符之间转换的指南。某些应用程序滥用此设置来确定应显示哪种语言用户界面。

文本文件的处理是特定于应用程序的,因此此设置不会影响它。

不完全正确。以下是一些示例:(当为非 Unicode 程序设置为韩语时,'\'(反斜杠)被替换为 '?'(韩国货币符号))

  • 在许多应用程序中,所有“\”都显示为“?” 看看 gVim(一个文本编辑器)。注:底层数据仍与出现“\”时相同。如果您在另一台计算机上打开此文件,它会再次显示为“\”。
  • 所有文件路径都以“?”分隔。
  • 某些应用程序,如英特尔的视频驱动程序,会使用此设置来决定显示哪种语言 UI。

替代文字

背景资料:

Windows 用于存储具有 8 位 ASCII 字符的字符串。也就是说,每个字符使用 8 个二进制数字。这仅允许 256 个不同的字符;不足以代表世界上所有的书面语言。因此,不同的语言区域决定以不同的方式解释 8 位字符以适合他们自己的语言(添加重音元音、除“$”之外的自己的货币符号等)这些称为编码。应用程序必须明确告诉 Windows 使用哪种编码;许多程序没有,因此 Windows 假定该版本的 Windows 的本地编码。

现在 Windows 使用 16 位 Unicode 字符存储字符串。每个字符使用两倍的位。这允许最多(几乎)65,536 个不同的字符。仍然不足以代表世界上所有的书面语言,但 Unicode 还指定了一种从更广泛的字符池中挑选某些字符集的方法。

现在,当 Windows 运行一个不了解 Unicode 的旧程序时,它会做什么?Windows 必须在 8 位 ASCII 字符和 16 位 Unicode 字符之间进行转换。如果旧的应用程序明确指定编码,Windows 可以很好地做到这一点,但许多应用程序没有。因此,Windows 默认为相关设置:非 Unicode 程序的语言。


编辑:解决约书亚的评论

因此,除了为 GUI 字符串选择编码外,此设置还会影响字体选择(我猜 ? 只是欧洲字体中显示为反斜杠的字体表示,不是吗?)

是和否。正在发生称为“字体链接”的东西来显示“?” 当 TrueType 字体不包含此字符时。仅有的 '?' 以不同的字体显示。但是,在非 TrueType 字体的情况下,使用完全不同的字体(例如,在 cmd 控制台中)。此外,货币符号是一种非常特殊的情况。Windows 做了额外的工作来用本地货币符号替换“\”,以保持 Windows 以前版本的行为。

Windows 系统字体也​​可以通过称为“字体替换”的方式进行更改。在这种情况下,系统字体完全替换为新字体(尽管字体名称保持不变)。根据我对韩语语言环境的经验,替换的新字体看起来不如原始字体好看。

此设置是否会影响其他任何内容?

我有过使用韩语语言环境导致应用程序无法正常运行的罕见经历。我记得的一个应用程序是一个正则表达式预览工具。它只是在韩国语言环境中没有产生正确的结果(或者它甚至无法启动?)每当我想使用这个程序时,我都不得不切换到美国语言环境。