Python Windows API:我应该始终使用';W';函数的变体,或是';A';也适用吗?

Python Windows API:我应该始终使用';W';函数的变体,或是';A';也适用吗?,python,function,winapi,Python,Function,Winapi,我正在用Python编写一个程序,其中一个函数调用了GetWindowText函数来获取当前窗口的标题文本。我还不太了解Windows API,但我知道函数的“A”变体是ANSI,而“W”变体是每个MSDN的宽度 我的问题是,我现在是否总是想使用“W”,即GetWindowTextW,如果是,为什么?我做了一些研究,但我似乎不能完全理解使用“A”的错误。这仅仅是遗留问题,程序员已经自然而然地转向了“W”,还是因为它会导致代码出现问题而导致错误的做法?始终使用W(unicode)版本,除非您出于某

我正在用Python编写一个程序,其中一个函数调用了GetWindowText函数来获取当前窗口的标题文本。我还不太了解Windows API,但我知道函数的“A”变体是ANSI,而“W”变体是每个MSDN的宽度

我的问题是,我现在是否总是想使用“W”,即GetWindowTextW,如果是,为什么?我做了一些研究,但我似乎不能完全理解使用“A”的错误。这仅仅是遗留问题,程序员已经自然而然地转向了“W”,还是因为它会导致代码出现问题而导致错误的做法?

始终使用W(unicode)版本,除非您出于某种原因确实不想使用(一些较新的API甚至没有版本)。 此处记录了这一点:。我引述:

新的Windows应用程序应使用Unicode以避免 不同代码页的不一致性和易于本地化。 它们应该用泛型函数编写,并且应该定义 UNICODE将函数编译为UNICODE函数。在少数 在应用程序必须处理8位字符数据的地方,它 可以显式使用Windows代码页的函数

始终使用W(unicode)版本,除非出于某种原因您真的不想使用(一些较新的API甚至没有unicode版本)。 此处记录了这一点:。我引述:

新的Windows应用程序应使用Unicode以避免 不同代码页的不一致性和易于本地化。 它们应该用泛型函数编写,并且应该定义 UNICODE将函数编译为UNICODE函数。在少数 在应用程序必须处理8位字符数据的地方,它 可以显式使用Windows代码页的函数


显式调用Windows API的宽字符版本至少还有两个原因:参数不受字符集转换的约束(因此也不受任意缓冲区限制),代码也不依赖预处理器符号。如果希望包含一个比
Windows.h
更保守的关于符号污染的标题,则后者非常有用。除此之外,Windows API现在还支持对以前称为ANSI API版本的实验性UTF-8支持。当与Python交互时,这可能会很有用。自Windows版本1903(2019年5月更新)开始提供。显式调用Windows API的宽字符版本至少还有两个原因:参数不受字符集转换的约束(以及任意缓冲区限制),您的代码不依赖于预处理器符号。如果希望包含一个比
Windows.h
更保守的关于符号污染的标题,则后者非常有用。除此之外,Windows API现在还支持对以前称为ANSI API版本的实验性UTF-8支持。当与Python交互时,这可能会非常有用。自Windows版本1903(2019年5月更新)开始提供。