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 and Windows 8 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 internalization and localization 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 7 or Windows 8 in English). The opposite example applies just as well: software written in English, which uses Latin characters, expect to run and be displayed correctly on a Windows in Chinese. In such scenarios, 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 Usage Scenarios: Movie Subtitles & Music Playing
The most common scenario 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".
How to Access the Current Language for non-Unicode Programs in Windows 8
In Windows 8 and Windows 8.1, the procedure is slightly different. Go to the Control Panel and then to "Clock, Language, and Region".
This section is different in Windows 8 and 8.1 than in Windows 7. Here, click or tap Region.
The Region window opens. Here, click or tap the last tab, named Administrative.
In the section named "Language for non-Unicode programs" you can see the current language.
If you want to change it, click or tap "Change system locale".
How to Change the Language for non-Unicode Programs
In Windows 7, the window for changing the language for non-Unicode programs is named "Region and Language Settings" while in Windows 8 and 8.1 it is named Region Settings.
The options displayed are the same. Here click or tap the "Current system locale" drop-down list to view all the languages you can choose from.
Select the new language that you want to use.
When done selecting the language, click or tap OK. You are now informed that you need to restart your PC or device, so that the change gets applied. Close all your open applications and documents and click or tap Restart now.
When you log back in, the new language is applied for non-Unicode programs.
IMPORTANT WARNING: the change of the language used for non-Unicode programs gets applied to ALL non-Unicode programs. Therefore, if you need to run another non-Unicode program which uses a completely different character set, you need to change the non-Unicode program language yet again.
Changing the language used for non-Unicode programs is not that hard. Unfortunately the theory is more complicated to explain and understand but hopefully I have done a good job at it. If you have any questions don't hesitate to use the comments form below. Also, for more articles on working with languages in Windows, check the articles recommended below.