I wrote a test program (in C++) to detect the codepages that would be returned by the GetACP(), GetOEMCP(), and GetConsoleCP() functions when the <utf8:activeCodePage>UTF-8</utf8:activeCodePage> setting is added to the manifest.
The <utf8:activeCodePage> manifest element (supported on Windows 10 Version 1903 or later) is in the http://schemas.microsoft.com/SMI/2019/WindowsSettings namespace and is added to the asmv3:WindowsSettings element as shown below: <asmv3:windowsSettings xmlns:dpi1="http://schemas.microsoft.com/SMI/2005/WindowsSettings" xmlns:dpi2="http://schemas.microsoft.com/SMI/2016/WindowsSettings" xmlns:utf8="http://schemas.microsoft.com/SMI/2019/WindowsSettings"> <dpi1:dpiAware>true/PM</dpi1:dpiAware> <dpi2:dpiAwareness>PerMonitorV2, PerMonitor, system</dpi2:dpiAwareness> <utf8:activeCodePage>UTF-8</utf8:activeCodePage> </asmv3:windowsSettings> Here is the output of the test program without the <utf8:activeCodePage>UTF-8</utf8:activeCodePage> setting present in the executable manifest: GetACP() result: 1252 GetOEMCP() result: 437 GetConsoleCP() result: 437 System default LCID: 1033 User default LCID: 1033 User default UI LCID: 1033 Codepage from system default LCID: 1252 Codepage from user default LCID: 1252 Codepage from user default UI LCID: 1252 Here is the output of the same test program with an executable manifest that includes the <utf8:activeCodePage>UTF-8</utf8:activeCodePage> setting: GetACP() result: 65001 GetOEMCP() result: 65001 GetConsoleCP() result: 437 System default LCID: 1033 User default LCID: 1033 User default UI LCID: 1033 Codepage from system default LCID: 1252 Codepage from user default LCID: 1252 Codepage from user default UI LCID: 1252 Note that the <utf8:activeCodePage>UTF-8</utf8:activeCodePage> setting in the application manifest changes the results of the GetACP() and GetOEMCP() calls but not the GetConsoleCP() call. I wrote another test program, and the argument strings passed into the main(int argc, char** argv) function are converted to UTF-8 if the <utf8:activeCodePage>UTF-8</utf8:activeCodePage> setting is there in the application manifest whereas the argument strings passed into the main (int argc, char** argv) function are converted to the ANSI codepage (which is usually code page 1252 on US English systems) if the <utf8:activeCodePage>UTF-8</utf8:activeCodePage> setting is there in the UTF-8 manifest.