gpt4 book ai didi

c# - "Beta: Use Unicode UTF-8 for worldwide language support"究竟做了什么?

转载 作者:可可西里 更新时间:2023-11-01 13:27:29 24 4
gpt4 key购买 nike

在某些 Windows 10 版本中(内部人士从 2018 年 4 月开始,以及“正常”1903 年),有一个名为“Beta:使用 Unicode UTF-8 以获得全局语言支持”的新选项。

您可以通过转到“设置”然后查看此选项:所有设置 -> 时间和语言 -> 语言 -> “管理语言设置”

这是它的样子:

enter image description here

选中此复选框后,我观察到一些不正常情况(如下),我想知道此复选框的确切作用以及为什么会出现以下情况

在 Visual Studio 2019 中创建一个全新的 Windows 窗体应用程序。在主窗体上指定 Paint 事件处理程序,如下所示:

private void Form1_Paint(object sender, PaintEventArgs e)
{
Font buttonFont = new Font("Webdings", 9.25f);
TextRenderer.DrawText(e.Graphics, "0r", buttonFont, new Point(), Color.Black);
}

运行程序,如果未选中该复选框,您将看到以下内容:

enter image description here

但是,如果您选中该复选框(并按要求重新启动),这将更改为:

enter image description here

可以查Webdings维基百科上的字体。根据给出的字符表,这两个字符的编码为"\U0001F5D5\U0001F5D9"。如果我使用它们而不是 "0r" 它可以选中复选框但没有选中复选框它现在看起来像这样:

enter image description here

我想找到一个始终有效的解决方案,无论复选框是否选中。

这可以做到吗?

最佳答案

您可以在 ProcMon 中看到它。它似乎在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet 中设置了 REG_SZACPMACCPOEMCP\Control\Nls\CodePage65001

我不完全确定,但它可能KernelBase.dll 中的变量 gAnsiCodePage 有关,GetACP 读取。如果您真的想要,您可能可以通过动态反汇编 GetACP 找到读取 gAnsiCodePage 并获取指向它的指针,然后直接更新变量的指令序列。

(实际上,我 see references to an undocumented function named SetCPGlobal 可以完成这项工作,但我在我的系统上找不到该功能。不确定它是否仍然存在。)

关于c# - "Beta: Use Unicode UTF-8 for worldwide language support"究竟做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56419639/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com