How do the common controls convert between ANSI and Unicode?

Raymond Chen


Commenter Chris Becke asks how the common controls convert ANSI parameters to Unicode, since the common controls are Unicode internally. Everything goes through CP_ACP, pretty much by definition. The ANSI code page is CP_ACP. That’s what ACP stands for, after all. Now, there are some function families that do not use ANSI. The console subsystem, for example, prefers the OEM character set for its 8-bit strings, and file system functions can go either way, based on the setting controlled by the SetFileAPIsToANSI and SetFileAPIsToOEM functions.

In the scenario Chris describes, I suspect that the problem is not the ANSI-to-Unicode conversion but rather that the font selected into the listview didn’t support the necessary characters.


Comments are closed.