gpt4 book ai didi

unicode - Win32 API 函数需要什么编码?

转载 作者:行者123 更新时间:2023-12-02 20:27:47 27 4
gpt4 key购买 nike

例如,MessageBox 函数具有用于文本和标题的 LPCTSTR 类型参数,当定义 _UNICODE 或 _MBCS 时,该参数分别是指向 char 的指针或指向 wchar 的指针。

MessageBox 函数如何解释这些刺痛?作为哪种编码?

我找到的唯一解释是:

http://msdn.microsoft.com/en-us/library/cwe8bzh0(VS.90).aspx

但是它没有说任何关于编码的事情?只是在 _MBCS 的情况下,一个字符占用一个 wchar(在 Windows 上为 16 位),而在 _UNICODE 的情况下,一个字符占用一或两个字符(8 位)。

微软的一些 UTF-8 和 UTF-16 版本也忽略了 UTF-8 中必须以 3 或 4 个字节编码的任何内容以及 UTF 中必须以 4 字节编码的任何内容-16?有没有办法用 MessageBox 显示 Unicode 基本多语言平面之外的任何内容?

最佳答案

每个函数通常有两种不同的实现:

  • MessageBoxA,接受 ANSI 字符串
  • MessageBoxW,接受 Unicode 字符串

这里,“ANSI”表示当前分配给进程的多字节代码页。这根据用户的偏好和区域设置而有所不同,尽管可以依靠 WideCharToMultiByte 等 Win32 API 函数来进行正确的转换,并且 GetACP 函数会告诉您正在使用的代码页。 MSDN explains the ANSI code page and how it interacts with Unicode.

‘Unicode’一般表示UCS-2;也就是说,对 0xFFFF 以上字符的支持不一致。我还没有尝试过,但最近版本 (> Windows 2000) 中的 UI 函数(例如 MessageBox)应该支持 BMP 之外的字符。

关于unicode - Win32 API 函数需要什么编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4143110/

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