Have you ever had problems with running applications written in languages which use special character sets like Chinese, Arabic, Russian, Romanian or Hebrew? If you have, then you should read this article about Unicode and changing the language used for non-Unicode programs. If this sounds like gibberish to you, don't worry - read on and you will understand what Unicode is, how it works and how to make Windows 7, Windows 8.1 and Windows 10 correctly display programs which use non-Unicode character sets.
What is Unicode and why does it matter?
Before going to your usual step by step tutorial, let's talk about Unicode and what it is. Unicode is a character encoding standard, developed by the Unicode Consortium, that defines a set of letters, numbers, and symbols that represent almost all of the written languages in the world. Its success at unifying character sets has led to widespread use in the creation of computer software.
Where does Unicode come in? When you talk about software being written in a language with a specific character set (e.g. Chinese) that is expected to run and be displayed correctly on a computer with an operating system which uses a completely different character set (e.g. Windows in English). The opposite example applies just as well: software written in English, which uses Latin characters, expected to run and be displayed correctly on a Windows computer in Chinese. In such situations, depending on how the application was coded, it can happen that not all the characters in the interface of the application get displayed correctly, becoming a bother.
Complications generally happen when you need to combine software with operating systems that have "conflicting" character sets like Chinese, Japanese, Arabic, Hebrew, Russian, etc. versus languages which use Latin characters, such as English, Romanian, Spanish, German, etc.
When such conflicts occur, the display language used by the operating system is considered to be the Unicode language and, by default, non-Unicode programs are set to use the same language. The software with a different character set is considered to be a non-Unicode program. Since it uses a completely different character set from the one used by the default non-Unicode program language, it is not displayed correctly. In order to fix the problem, you need to change the default language used by the operating system for non-Unicode programs to match the one used by the program you want to run.
Below you can see an example of such a conflict, and how certain characters were displayed before changing the non-Unicode programs language and after it was changed to the correct language.
The most common problem: movie subtitles & music playing
The most common situation when the language for non-Unicode programs being set incorrectly causes usability frustrations is when playing media files. For example: you have Windows in English and you are playing an English language movie for which you need to play the subtitles in your local language, which includes some characters not found in the English language - those characters might not get displayed well. You can also play music in your local language, and the name of a band or song contains characters not found in the English language - chances are those characters do not get displayed correctly.
Setting the language for non-Unicode programs to your local language will always fix these problems.
How to access the current language for non-Unicode programs in Windows 7
In Windows 7, open the Control Panel and click the "Clock, Language, and Region" link.
In the "Clock, Language, and Region" panel, click on Region and Language.
This opens the Region and Language window. There, go to the Administrative tab. In the "Language for non-Unicode programs" section, you can see the currently set language. To change it, first click on Change system locale.