How to change the system locale to run non-unicode applications/programs.

Please read everything first before making any changes to your system.

I wanted to share what I just discovered yesterday concerning the ability to install/run programs that use non-Unicode characters(note: this also works for the default Windows applications as well).

I tried searching online, but was only redirected to one post on these forums from two years ago that was essentially unresolved.  Having used Linux for about ten years, I decided to try my hand at Powershell to see if I could find a solution that way.  Btw, I highly recommend all Windows users/tinkerers to go here and learn about Powershell: http://www.microsoftvirtualacademy.com/training-courses/getting-started-with-powershell-3-0-jump-start.

Go through the first three or four videos, then start reading all the very well documented help files.  The two main files you will use to discover more information are: "Get-Help [search term]" and "Get-Command [search term]".  Please note that letter case is note mandatory and wild cards (eg. *, ?, etc) are accepted.

Now on to the locale changing...

Before you can change any locales, you must install the language packs of the languages that you plan to use on your system:

  1) Open PC Settings.

  2) Select "Time and Language".

  3) Select "Region and Language".

  4) Select "Add Language" and add all of the language packs that you want to use.

  5) Close PC Settings window when done.

With that out of the way, now it's time to learn how to change the locale for non-Unicode characters(which is different from setting a language as primary in the PC Settings):

First, you want to open up an instance of Powershell.  Once it is open, right-click on the Powershell icon in the taskbar at the bottom of the screen and select "Pin this program to Taskbar".

Next, type "exit" inside Powershell to close that session out.  Then, right-click on the Powershell icon at the bottom and select "Run as Administrator".

Type "Get-WinSystemLocale" and notice the format of your default locale listed in the "Name" category(mine was "en-US").

Now type "Get-WinUserLanguageList" to see the list of all of the language packs installed on your system.  This time, you want to note the name of the desired language listed in the "LanguageTag" row(which is the first row for each language).

Now, type "Set-WinSystemLocale [-SystemLocale]"--with [-SystemLocale] being the name of the locale previously listed in "Get-WinUserLanguageList".

Finally, "exit" out of the Powershell session and restart your computer.  Once it reboots, all programs should accurately display the non-Unicode characters for the language you selected.

Bon appetite!

I should mention a few things here:

  1) I STRONGLY recommend reading the help files for the commands I gave you before using them.

  2) When using get-help to learn about the commands, make sure to add " -examples" at the end of the command to see examples of how to use the commands.

  3) Learn Powershell!  I just started a week ago and I already learned how to do this much!  All I have used so far for resources are the first five videos of the link I gave you and the help files from "get-help".

  4) Get-help has a subcategory of files that start with "about_".  These are great for learning general background knowledge of many things.  You can pull up the entire list of about files by typing "Get-Help about_*".

  5) Before using any of the Get-Help files, you should run "Update-Help" in Powershell(as Administrator) to install/update all of the newest help files information.

In Linux, Bash(command shell) had the ability to selectively open single applications/programs in a non-default locale using the "LANG" environment variable option.  If I find out how to do that in Powershell, I will update this post.

Let me know if this helps!

 

Discussion Info


Last updated December 10, 2019 Views 1,322 Applies to: