Japanese game garbled on Windows? Fix the system locale, not the game
You installed a Japanese game, launched it, and the text is unreadable: strings like ‚±‚ñ‚É‚¿‚Í, a wall of unrelated Chinese characters, or question marks through every menu. Or the game never reaches its title screen and dies with an error naming a path you cannot read. In most of these cases nothing is wrong with the game files. The game was built with an older text system that assumes the Japanese character table Windows hands to programs that are not Unicode-aware; your Windows hands it a different table, so every Japanese string, including the names of the game's own files, is decoded wrong.
The fix is on your machine, not in the game folder: set the Windows system locale, the setting labelled Language for non-Unicode programs, to Japanese, make sure the Beta UTF-8 option is off, restart, and launch again. If you would rather not change the whole system, a per-application tool on Windows or a launch option on Steam Deck can do the same for one game.
Below: what the setting does, the fix and its side effects, how to tell this apart from a missing font or a damaged file, and then the developer side: why the game needs the setting and how to build one that does not. The last section covers the reverse case, a Chinese or Korean game garbling on Japanese Windows.
Why a Japanese game garbles on non-Japanese Windows: code pages
Windows handles text internally as Unicode, and a program written for the Unicode versions of its programming interfaces handles Japanese, Chinese and English alike, whatever country the machine is set to. Programs written for the older, byte-based versions of those interfaces, often called the ANSI versions, work differently. They pass text as raw bytes, and Windows interprets those bytes through a single conversion table called the system code page, which is chosen by the system locale setting. Japanese Windows uses code page 932, Microsoft's variant of Shift_JIS. English and most Western European Windows use code page 1252. Simplified Chinese uses 936, Korean 949, Traditional Chinese 950.
Many older Japanese game engines, tools and libraries, and quite a few games still being made with them, store their text as Shift_JIS bytes and use the byte-based interfaces. On a Japanese machine that works, because the bytes and the table agree. On any other machine the bytes are identical but the table is different, so the ten bytes that mean こんにちは on Japanese Windows read as something else everywhere else. Nothing in the file changed.
Bytes the game stores (Shift_JIS) 82 B1 82 F1 82 C9 82 BF 82 CD Read on Japanese Windows (932) こんにちは Read on English Windows (1252) ‚±‚ñ‚É‚¿‚Í Read on Chinese Windows (936) 偙傫偵偪偼 Read on Korean Windows (949) 궞귪궸궭궼 Read with the UTF-8 beta option on replacement characters and stray fragments
The crash case is the same mechanism applied to file names. If the game opens a data file or folder whose name contains Japanese characters, that name goes through the same wrong table, Windows looks for a path that does not exist, and the game stops with a message about a missing file whose name is unreadable. It can even happen before the game runs: an archive created on Japanese Windows without Unicode file-name information may extract with garbled names on another locale, and the game then cannot find its own assets even though their contents are intact.
The fix on Windows: set the system locale to Japanese and restart
The setting you need is the system locale, which Windows also describes as the language for non-Unicode programs. On current Windows 11 it typically lives under Settings, then Time & Language, then Language & region, then Administrative language settings, which opens a dialog containing a Change system locale button. Windows 10 has a similar route where the page is called Language rather than Language & region, and on both you can usually reach the same dialog through the Control Panel's Region item or by running intl.cpl. Labels move between Windows versions; if your screen does not match, search Microsoft's official help for change system locale rather than guessing.
- Open the Change system locale dialog as described above. Changing it requires administrator rights.
- Set the current system locale to Japanese (Japan).
- Find the checkbox labelled Beta: Use Unicode UTF-8 for worldwide language support and make sure it is unchecked.
- Confirm and restart Windows. The change takes effect only after a restart.
- Launch the game. If it now runs but shows empty boxes where characters should be, that is a font problem, covered below.
The UTF-8 checkbox is the step people most often miss. When it is on, Windows gives every non-Unicode program UTF-8 as its code page, whichever locale is selected above it. That helps some modern software, but a Shift_JIS game then has its bytes read as UTF-8, and Shift_JIS byte sequences are mostly invalid UTF-8. The result is replacement characters, question marks, or an immediate crash. If you turned this option on to fix a different program, it is very likely why a Japanese game broke, and unticking it is sometimes the entire fix.
Changing the system locale does not change the language of Windows' own menus, your keyboard layout, or your date and currency formats; those are separate settings. It does change the table every non-Unicode program on the machine receives, so an old program from another language that relied on the previous table may start garbling in turn. Modern Unicode programs are unaffected. If the change causes trouble elsewhere, set the locale back the same way when you are done playing.
Fixing one game without changing the whole system
If you play one Japanese title occasionally and do not want a machine-wide change, there are per-application approaches. On Windows, third-party tools can start a single program with a Japanese locale while the rest of the system stays as it is; the best-known open-source one is Locale Emulator. Download it only from its official project page, since small utilities like this are a favourite disguise for malware, and follow the project's own documentation for applying it.
On Steam Deck, and on Linux desktops running Windows games through Proton, the commonly used approach is a launch option in the game's properties in Steam that sets the locale for that game only. It is widely reported to work for the Shift_JIS class of games, but it is community practice rather than a guaranteed feature, so treat it as the first thing to try.
LANG=ja_JP.UTF-8 %command%
What none of these do: they cannot draw characters your fonts do not have, they cannot repair a file that really was corrupted, and they cannot fix a game that is broken on Japanese Windows too. If a game still misbehaves after the locale is correct, the cause is somewhere else.
Is it really the locale? Telling it apart from font and data problems
Several failures look alike in a screenshot, and the wrong diagnosis wastes hours. The pattern of the failure tells them apart.
- Japanese is unreadable everywhere: dialogue, menus, the window title, error dialogs, and often file names inside the game folder. The wrong output is readable letters, punctuation or Chinese characters rather than blanks. This is the system locale.
- Empty rectangles or outlined boxes, while copying the text out gives you correct Japanese. That is a font with no glyphs for those characters, not an encoding problem. See Empty boxes instead of characters: it's a font problem, not an encoding problem.
- Only some strings show question marks, and they are plain question marks that stay wrong even on Japanese Windows. The characters were destroyed somewhere in the developer's pipeline, and no setting on your side brings them back. See the two cases where garbled text cannot be recovered.
- The game crashes at launch with an error about a file or path containing unreadable characters, or a script error naming a garbled file. Very often the locale, because file names went through the same wrong table as the text.
- Text is correct except for one specific character, such as a wave dash or a circled number. That is a detail of how one code page maps to Unicode, not the locale as a whole, and a fix on the player's side is unlikely.
One check settles most cases: if the same build reads correctly for players on Japanese Windows and yours is set to another locale, the locale is the first thing to change.
For developers: why your game needs this, and how to stop needing it
If you make games in Japan and ship them worldwide, every player who has to change their system locale is a player who might refund instead. The reports look like bugs in your game, and in a fair sense they are: the game assumes something about the player's machine that is false for most of the world. The assumptions usually enter in one of these places.
- Text, script or data files stored as Shift_JIS and read through the byte-based, non-Unicode interfaces of the engine, a library, or your own code.
- File or folder names containing Japanese characters anywhere in the distribution, including inside archives.
- String handling that assumes the machine's code page is Japanese, for example when building a save path or reading a configuration file.
- Paths that include the player's own user name. A player whose Windows account name is Cyrillic or Chinese has a profile path that byte-based code may not be able to represent, so saving fails for them even with the right locale.
- Reliance on the Japanese fonts that happen to be installed on Japanese Windows.
Each has a direct countermeasure.
- Use the Unicode-aware interfaces of your engine and platform, and store text as UTF-8. If the engine offers a Unicode build or setting, use it for the release build.
- Keep every file and folder name in the distribution ASCII, including the archive itself, and check that your archiving tool writes Unicode file-name information.
- Ship the fonts the game needs instead of relying on system fonts, and confirm the licence allows redistribution.
- If you cannot rewrite the text layer, recent Windows 10 and Windows 11 releases let an application declare UTF-8 as its own process code page in its application manifest, so only that program sees UTF-8. This helps only when your data is UTF-8; check Microsoft's documentation on using UTF-8 code pages in Windows apps for details and version requirements.
- Test on a Windows whose system locale is not Japanese. The system locale is a machine-wide setting, so a second user account on your own PC does not test it; use a virtual machine or a spare PC set to English or Chinese. A second account is still worth creating for a different check: give it a non-ASCII user name and confirm that saving works.
- If the game genuinely requires the Japanese locale and you cannot change that, say so plainly on the store page and in a README, with the exact steps. A player who was told before buying rarely leaves a bad review over it.
When a report arrives, a reply the player can act on in five minutes is worth more than an apology. A template you can paste and adapt:
Subject: Garbled text / crash on start - how to fix it on Windows Thanks for the report. The game itself is not damaged. It uses an older text system that expects the Windows "system locale" (the language for non-Unicode programs) to be Japanese. On a PC set to another locale, its text and file names are read with the wrong character table, which causes the garbled text or the crash you saw. To fix it on Windows: 1. Open Settings > Time & Language > Language & region > Administrative language settings. (The exact path differs by Windows version. If you cannot find it, search Microsoft's help for "change system locale".) 2. Click "Change system locale..." and choose "Japanese (Japan)". 3. Make sure "Beta: Use Unicode UTF-8 for worldwide language support" is UNCHECKED. 4. Restart Windows and launch the game again. This does not change your Windows display language. It can affect other old non-Unicode programs, so you can switch it back the same way later. If you prefer not to change the whole system, a per-application locale tool also works for many players. On Steam Deck or Linux with Proton, try this launch option in the game's properties: LANG=ja_JP.UTF-8 %command%
The same failure in reverse: Chinese and Korean games on Japanese Windows
Everything above works in every direction. A Chinese game that stores its text in code page 936, or a Korean one in 949, garbles on Japanese Windows for the same reason: the bytes are fine, the table is wrong. Players in Japan typically see runs of half-width katakana mixed with stray kanji, or a crash naming an unreadable path. The fix is to set the system locale to Chinese (Simplified, China), Chinese (Traditional, Taiwan) or Korean (Korea), whichever the game requires, with the same UTF-8 checkbox off and the same restart. The display language stays Japanese.
The side effect also runs in reverse: while the locale is Chinese, older Japanese non-Unicode programs on that machine garble instead, so switch back afterwards. The lesson for developers is identical. The player's system locale is not something you get to assume. Build for Unicode, keep file names ASCII, ship your fonts, and test on a machine that is not set up like yours.