STATUS_UNMAPPABLE_CHARACTER (0XC0000162) Fix: Unicode to Multibyte
Happens when a program can't map a Unicode character to your system's code page. Usually from filenames, config files, or legacy apps with special characters.
When This Error Hits
You're running an older app — something from the Windows XP or 7 era — and it crashes with status 0xC0000162. Or you're trying to rename a file with a Chinese, Korean, or Cyrillic character and Windows throws this in your face. I've seen it most often with legacy medical software and accounting tools that still use ANSI code pages instead of Unicode.
What's Actually Happening
The culprit here is almost always a character that exists in Unicode but doesn't exist in the target multibyte code page your app or system is using. Think of it like trying to write the letter ñ on a keyboard that only has English letters. Your system's code page (usually Windows-1252 for English, but varies by region) is a limited character set. When a program tries to convert a Unicode character — like a Chinese character U+4E2D — into that code page, there's no match. So it throws 0xC0000162.
This happens in two main scenarios:
- Legacy applications that use
WideCharToMultiByte()or similar API calls without proper fallback handling. - File operations on files with characters your system's default code page can't represent.
How to Fix It
Step 1: Check Your System's Code Page
Open a command prompt and run:
chcp
This shows your active code page. Common ones: 437 (US English), 1252 (Western European), 932 (Japanese), 949 (Korean). If you're working with files that have characters from a different region, this mismatch is your problem.
Step 2: Rename or Remove Problem Files
If the error happens when accessing a specific file, rename it to use only ASCII characters (A-Z, 0-9, underscores, hyphens). No accents, no CJK characters. Use the command line for this:
ren "original文件名.txt" "newfile.txt"
If renaming fails because of the same error, boot into Safe Mode or use a PowerShell script that bypasses the code page:
powershell -Command "Rename-Item -LiteralPath 'C:\path\to\file' -NewName 'newfile.txt'"
Step 3: Change System Locale (For Apps)
If a legacy app needs support for, say, Korean characters, change your system locale to match:
- Open Control Panel > Region > Administrative tab.
- Click Change system locale.
- Select the correct language (e.g., Korean for files with Hangul).
- Reboot.
This changes the default code page system-wide. It's a blunt fix, but it works.
Step 4: Registry Hack for Specific Apps
For stubborn legacy apps that you can't modify, add the application to the AppCompat registry and force UTF-8 handling:
- Open Regedit and navigate to
HKEY_CURRENT_USER\Software\Microsoft\AppCompat. Create the key if it doesn't exist. - Add a new DWORD named EnableUTF8 and set it to 1.
- Or, for a specific executable, go to
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layersand add a string value with the full path to the .exe, setting it to UTF8.
This only works on Windows 10 version 1903 or later. Don't bother on older Windows.
Step 5: Convert the App's Configuration Files
Sometimes the problem is in config files (XML, INI, JSON) saved with UTF-8 encoding. Open them in Notepad++ and convert to ANSI. Look for characters like smart quotes, em dashes, or non-breaking spaces that don't map to ASCII. Replace them manually or use a find/replace script.
If It Still Fails
Check if the application has a compatibility mode setting in its properties. Right-click the .exe, go to Properties > Compatibility, and try running it in Windows XP SP3 or Windows 7 mode. Also verify that your data files aren't corrupted — sometimes the error hides a deeper file system issue. Run chkdsk /f on the drive. If you're still stuck, the app may simply need a Unicode-aware version. That means a vendor update or replacement.
One last thing: if you're on a Server edition and the app is older than Windows Server 2008, you might need to install the Desktop Experience feature. Missing code page files are a real problem there. I've seen it twice this year alone.
Was this solution helpful?