Language for
Non-Unicode Programs
in Windows — Complete Fix Guide
If Telugu, Hindi, Kannada, or any other regional language font is showing boxes, question marks, or Latin gibberish in your legacy software, this setting is almost certainly the cause — and the fix takes under two minutes.
You installed a regional language typing tool or opened an old document in Adobe PageMaker. Instead of readable Telugu or Hindi text, you see rows of meaningless Latin characters, empty boxes, or question marks. The font is installed. The software opens. But the text is wrong.
This is called mojibake — a Japanese term for the garbled text that appears when a system interprets byte data using the wrong character encoding. In Windows, the root cause is almost always the “Language for non-Unicode programs” setting being configured for the wrong language. This guide shows you exactly what this setting does and how to fix it.
1. What Is the “Language for Non-Unicode Programs” Setting?
Windows handles two categories of text-aware applications differently. Modern applications declare their own encoding — they tell Windows “I speak Unicode” — and Windows communicates with them using UTF-16. These apps work correctly everywhere, regardless of system locale settings.
Older applications — built before Unicode became the universal standard — do not declare their encoding. Instead, they ask Windows for the “system default encoding” and assume that is the right code page for their text. In Windows API terms, this is called CP_ACP — the ANSI Code Page, or the default code page for non-Unicode programs.
If your Anu Script typing tool was built expecting Telugu encoding (code page 1252 with Telugu font mapping), but Windows is returning the Chinese code page, the bytes your application stores will be interpreted incorrectly — and you see garbled text instead of Telugu characters.
2. Why Legacy Software Shows Garbled Text (Mojibake)
Understanding exactly why garbled text appears makes the fix make intuitive sense. Here is the mechanism:
A non-Unicode font like Anu Script stores its characters at specific byte positions that its vendor chose privately. The Telugu character “అ” might be stored at byte position 160 in Anu Script. But the same byte position in a different code page — say, the Western European Windows-1252 code page — maps to the character “°” (degree sign).
The bytes stored in the file have not changed. The font file has not changed. The only thing that changed is which code page Windows uses to interpret those bytes — and that is entirely controlled by the “Language for non-Unicode programs” setting.
3. How to Change It — Windows 10
-
Open Windows Settings Press Win + I to open the Settings app, or search “Settings” in the Start menu
-
Go to Time & Language Click the “Time & Language” tile in the Settings main screen
-
Select Language from the left sidebar In the left panel, click “Language” to open language preferences
-
Click Administrative Language Settings Scroll down and click the link labeled “Administrative language settings” — this opens the classic Region dialog
-
Click “Change system locale…” In the Region dialog, go to the “Administrative” tab and click the “Change system locale…” button
-
Select your target language From the dropdown, choose the language that matches your non-Unicode software — for example “Telugu”, “Hindi”, or “Kannada”
-
Click OK and restart Windows will prompt you to restart. The change takes effect only after a full system restart — not just a sign-out.
4. How to Change It — Windows 11
-
Open Settings Press Win + I or right-click the Start button and select “Settings”
-
Navigate to Time & language → Language & region Click “Time & language” in the left sidebar, then “Language & region” in the main panel
-
Click “Administrative language settings” Scroll to the bottom of the Language & region page and click this link to open the classic Region dialog
-
Go to the Administrative tab and click “Change system locale…” This button opens the specific dialog for the non-Unicode language setting
-
Choose your language and click OK Select the language matching your legacy software, confirm, and restart Windows when prompted
5. Which Language Setting to Choose
| Your Legacy Font / Software | Language to Select | Code Page |
|---|---|---|
| Anu Script, Eemaata (Telugu) | Telugu | CP 1200 / Telugu locale |
| Kruti Dev, Chanakya, DevLys (Hindi) | Hindi | CP 1200 / Hindi locale |
| Nudi, Baraha (Kannada) | Kannada | CP 1200 / Kannada locale |
| Shree Lipi, Harikrishna (Gujarati) | Gujarati | Gujarati locale |
| SutonnyMJ, Bijoy (Bengali) | Bengali (Bangladesh) or Bengali (India) | Bengali locale |
| Akriti, OR-TTSarala (Odia) | Odia | Odia locale |
| Legacy Western European fonts | English (United States) or your Western language | Windows-1252 |
| Japanese legacy software | Japanese | CP 932 (Shift-JIS) |
| Simplified Chinese legacy software | Chinese (Simplified, China) | CP 936 (GBK) |
6. Group Policy Method for IT Administrators
If you manage multiple machines in a corporate environment and need to set this consistently across all workstations, Group Policy is the right tool — not manual configuration on each machine.
- Open Group Policy Management Console (GPMC) on your domain controller
- Create or edit a GPO linked to the Organizational Unit containing your workstations
- Navigate to: Computer Configuration → Administrative Templates → System → Locale Services
- Find the policy “System locale” and configure it to the required language
- Apply the GPO — the setting will push to all computers in scope at the next Group Policy refresh cycle
- A restart is required on each machine for the change to take effect
7. If Changing the Setting Did Not Fix the Problem
If you changed the “Language for non-Unicode programs” setting, restarted Windows, and the text is still garbled, there are several other causes to investigate:
- The font is not installed — Non-Unicode fonts must be installed on the computer. If Anu Script is not installed, Windows has no glyph data to render with. Install the .ttf font file by right-clicking and selecting “Install for All Users”.
- Wrong font is selected in the application — The document or application must be using the specific non-Unicode font the text was created with. Selecting a different font — even one for the same language — will show wrong characters.
- The text is actually Unicode — If the original text was typed in a Unicode font (Gautami, Ramabhadra, Mangal), changing the system locale will not help. Unicode text needs a Unicode font, not a legacy font. Use the Unicode to Non-Unicode converter if you need to convert between formats.
- The application does not respect CP_ACP — Some older applications hard-code their code page internally rather than asking Windows. In these cases, the system locale setting has no effect and you need to find the application’s own language settings.
- The file was created on a different system — If the file was created with a different non-Unicode font than the one installed on your system, even the correct locale setting cannot fix the display. You need the exact same font version that was used to create the file.
If your problem is not a Windows locale issue but an encoding mismatch between Unicode and non-Unicode text, try the free Unicode to Non-Unicode font converter. For a deeper understanding of why these two encoding systems exist and how they differ, see What is Unicode and Non-Unicode? A Complete Guide. Also see our guide on Unicode vs Non-Unicode — Key Differences for a technical comparison.
Quick Recap
The “Language for non-Unicode programs” setting tells Windows which code page to use as the system default for legacy applications that don’t declare their own encoding. Setting it to the wrong language causes those applications to misinterpret byte data — producing the garbled text known as mojibake.
The fix is straightforward: Settings → Time & Language → Language & Region → Administrative Language Settings → Change System Locale → Select your language → Restart. That two-minute process resolves garbled text in the vast majority of cases involving legacy Indian language fonts and regional DTP software.
If it doesn’t fix your specific case, the troubleshooting steps in Section 7 will identify whether the real cause is a missing font, a wrong font selection, Unicode vs non-Unicode confusion, or an application that ignores the system locale entirely.