背景信息:

背景信息:

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

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

但是我能从此设置中期待任何其他行为变化吗?当此设置更改时,您对实际发生的情况有何见解?

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

答案1

快速回答: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 系统字体也​​可以通过“字体替换”。在这种情况下,系统字体将完全被新字体替换(尽管字体名称保持不变)。从我对韩语语言环境的经验来看,替换的新字体看起来并不像原始字体那么好看。

这个设置会影响其他什么吗?

我曾遇到过使用韩语区域设置导致应用程序无法正常运行的罕见情况。我记得的一个应用程序是正则表达式预览工具。它在韩语区域设置下无法产生正确的结果(或者甚至无法启动?)每当我想使用此程序时,我都必须切换到美国区域设置。

答案2

基于 Unicode 的平台(例如 Windows XP 和 Server 2003)通过使用通常称为“系统区域设置”(或“非 Unicode 应用程序的语言”)的系统范围变量在内部将应用程序的非 Unicode 文本数据转换为 Unicode,模拟运行非 Unicode 应用程序所需的语言环境。非 Unicode 应用程序的语言应与“系统区域设置”定义的脚本或系列相同。不满足此条件会导致应用程序的 UI 中显示乱码。

来源

或者:

此设置允许不支持 Unicode 的程序通过安装必要的代码页和字体以本国语言显示菜单和对话框。但是,为其他语言设计的程序可能无法正确显示文本。

此设置仅影响非 Unicode 程序。您为此选项选择的语言不会更改 Windows 或其他 Unicode 程序的菜单和对话框。

以母语显示非 Unicode 程序

更多信息非 Unicode 程序的语言

相关内容