Winapi 调用API时,LPCWSTR字符串的编码是什么?

Winapi 调用API时,LPCWSTR字符串的编码是什么?,winapi,unicode,Winapi,Unicode,我试图通过一种深奥语言的FFI调用MessageBoxWWindowsAPI函数 我有两个字符串要提供给函数。我可能错了,但我知道LPCWSTR指针应该指向以null结尾的wchar\u t字符串(其宽度是编译器特定的) Win32 API中这些字符串的预期字符集和编码是什么?所需的编码是Unicode UTF-16LE 虽然wchar\u t的大小由实现定义,但在Windows上wchar\u t的大小始终为16位。LPCWSTR是const wchar\u t*的类型别名。始终是utf-16

我试图通过一种深奥语言的FFI调用
MessageBoxW
WindowsAPI函数

我有两个字符串要提供给函数。我可能错了,但我知道
LPCWSTR
指针应该指向以null结尾的
wchar\u t
字符串(其宽度是编译器特定的)


Win32 API中这些字符串的预期字符集和编码是什么?

所需的编码是Unicode UTF-16LE


虽然
wchar\u t
的大小由实现定义,但在Windows上
wchar\u t
的大小始终为16位。

LPCWSTR是
const wchar\u t*
的类型别名。始终是utf-16,对于任何可以使用Windows SDK的编译器都不是特定于编译器的。utf-16在这一特定情况下,端性很重要case@DavidHeffernan,也许你可以在你的答案中包括这个?好的,我做到了。我认为这是理所当然的,因为Windows只在little endian平台上运行。如果有一天它在big-endian上运行,那么它将使用UTF-16BE。@DavidHeffernan:事实上(部分)NT内核已经移植到用于Xbox360的PPC-BE,并且它们确实在那里使用UTF-16BE。不,Alpha是LE,就像最初用于PPC的NT一样。