Monday, March 06, 2006 1:01 AM
Michael S. Kaplan
chcp can't do everything
The chcp.com utility is a simple little program sitting in the \WINDOWS\SYSTEM32 subdirectory. Running it with /? willl give some helpful information about its purpose:
C:\WINDOWS\system32>chcp /?
Displays or sets the active code page number.
CHCP [nnn]
nnn Specifies a code page number.
Type CHCP without a parameter to display the active code page number.
There is also more information in the Windows XP documentation, which does hint at a problem in its small list of "supported" code pages:
| Code page |
Country/region or language |
|
437 |
United States |
|
850 |
Multilingual (Latin I) |
|
852 |
Slavic (Latin II) |
|
855 |
Cyrillic (Russian) |
|
857 |
Turkish |
|
860 |
Portuguese |
|
861 |
Icelandic |
|
863 |
Canadian-French |
|
865 |
Nordic |
|
866 |
Russian |
|
869 |
Modern Greek |
None of the ACP values are there, though this is I think a bit of social engineering -- to keep people thinking of it as the OEM code page. The 125x series code pages also work well here.
However, another set that is missing from the list is the ideographic code pages. You cannot use chcp to change to one of the ideographic code pages unless it is also the default system OEM code page.
Thus on a system with an 0x0409 default system code page:
C:\WINDOWS\system32>chcp 932
Invalid code page
C:\WINDOWS\system32>chcp 936
Invalid code page
C:\WINDOWS\system32>chcp 949
Invalid code page
C:\WINDOWS\system32>chcp 950
Invalid code page
This is a known and expected limitation for which there is no workaround....
This post brought to you by "Ā" (U+0100, a.k.a. LATIN CAPITAL LETTER A WITH MACRON)