Windows 10 Version 1903 introduced a new manifest property called activeCodePage
, which you can use to set the process’s code page to UTF-8.
Starting in Windows Server 2022 (and Windows 11),¹ you can also use this property to pick non-UTF-8 code pages in unpackaged app manifests.²
AppLocale finally grows up!
If you specify an activeCodePage
of Legacy
, then you’re saying that your application actively hates UTF-8. It will be given the system default locale, provided a system default local exists and it isn’t UTF-8. In those exceptional cases, you get code page 1252 as a fallback.
You can also specify a locale name such as en-US
or ja-JP
, and the application gets the code page corresponding to that locale. If the locale is not recognized by the system, then you get UTF-8 as a fallback.
This trick is most useful for application compatibility purposes: If you have some legacy application that assumes a specific locale, you can deploy a manifest next to the application that says “I don’t care what locale the system is using. Give this application the locale it wants.”
Here’s a summary table, since I know people love summary tables.
activeCodePage | UTF-8 |
specific locale | Legacy |
---|---|---|---|
Case-sensitive? | Yes | No | Yes |
Preferred result | UTF-8 | That locale, if available |
System locale, if available, and not UTF-8 |
Fallback result | UTF-8 | 1252 | |
Packaged app | Supported | Not supported | Not supported |
Unpackaged app | Supported | Supported | Supported |
¹ Specifically, build 20348 and higher, so that also includes HoloLens 2, also known as Windows Holographic, version 21H1.
² The code name for unpackaged app manifests³ was “fusion”, so if you read the documentation, you will frequently see them referred to as “fusion manifests”.
³ They weren’t called “unpackaged app manifests” at the time, because when the fusion project was being written, we didn’t have packaged apps at all. They were just called “manifests”. Later, when manifests were introduced for packaged apps, the retronym “unpackaged app manifests” was invented to describe fusion manifests.
Kind of close to codepages. My problem and question deal with the resource compiler. Specifically, trying to reference the STRINGTABLE in menu resources:
STRINGTABLE
BEGIN
IDS_FILE_MENU_POPUP L"&File"
END
IDM_APP_MENU MENU
BEGIN
POPUP IDS_FILE_MENU_POPUP
END
I am going to write a preprocessor for...
I believe application manifests exist as early as Windows XP, when you could use them to force themed common controls for (then-)legacy applications. It’s funny that they get a new name after (I suppose) 10 years when Windows 8 came out.
I had a dream about something on the phone was on the 2nd 11-2 Am my z drive flipped? MapQuest destination? Assistance
Four more years until I’m allowed to manifest for UTF-8 locale at work. (Windows Server 2016 EoL)