CP866 is usually used for console programs on Russian version of windows (which
is OEMCP), and CP1251 is usually used for gui programs on Russian version of
Windows (which is ACP). Technically I don't really see any reason why this
shouldn't be working with char types. However I would rather be using UTF-16
for every software on Windows, as the kernel itself is UTF-16 based. When you
call SomeFunctionA it will eventually call SomeFunctionW by converting strings
in the arguments from OEMCP/ACP to UTF-16. So technically by calling
SomeFunctionA you will get some runtime overhead.