コードページを変更するchcpコマンド

Windowsコマンドにはコンソールコードページを変更するchcpというコマンドが存在している。

このコマンドは名前のとおりにコンソールのコードページを変更するためのコマンドで、sshやtelnetでリモートホストにログインした場合にリモートホストの文字コードにコンソールのコードページを合わせたり、ファイルを処理する場合にファイルの文字コードにコンソールのコードページを合わせるといった目的で使われることがある。

通常このコマンドを実行することはないが、コンソールを使いこなそうと思うとそのうち必要になるシーンも出てくるので、覚えておいて損はない。

Microsoftのコードページ

そもそもコードページとは何かだが、これはシステムベンダが各社ごとに独自に規定している符号化文字集合を指定するための数字のことだ。またはその数字が意味する符号化集合であったり、それらに関連するシステムを指す言葉として使われている。

つまりコードページはベンダ独自の値なので、標準規約を調べてもこの値は出てこない。ベンダそれぞれのドキュメントを参考にする必要がある。Microsoftのコードページは「Code Page Identifiers | Microsoft Docs」にまとまっている。

コードページ認識子 .NET名 内容
037 IBM037 IBM EBCDIC 米国カナダ
437 IBM437 OEM 米国
500 IBM500 IBM EBCDIC インターナショナル
708 ASMO-708 アラビア語 (ASMO 708)
709 アラビア語 (ASMO-449+、BCON V4)
710 アラビア語 - トランスパレントアラビア語
720 DOS-720 アラビア語 (トランスパレント ASMO); アラビア語 (DOS)
737 ibm737 OEM ギリシャ語 (旧名 437G); ギリシャ語 (DOS)
775 ibm775 OEM バルト語; バルト語 (DOS)
850 ibm850 OEM マルチリンガルラテン1; ウェスタンユーロピアン (DOS)
852 ibm852 OEM ラテン2; セントラルユーロピアン (DOS)
855 IBM855 OEM キリル語 (主にロシア)
857 ibm857 OEM トルコ語; トルコ語 (DOS)
858 IBM00858 OEM マルチリンガルラテン1 + ユーロシンボル
860 IBM860 OEM ポルトガル語; ポルトガル語 (DOS)
861 ibm861 OEM アイスランド語; アイスランド語 (DOS)
862 DOS-862 OEM ヘブライ語; ヘブライ語 (DOS)
863 IBM863 OEM フレンチカナダ; フレンチカナダ (DOS)
864 IBM864 OEM アラビア語; アラビア語 (864)
865 IBM865 OEM ノルウェー語; ノルウェー語 (DOS)
866 cp866 OEM ロシア語; キリル語 (DOS)
869 ibm869 OEM モダンギリシャ語; モダンギリシャ語 (DOS)
870 IBM870 IBM EBCDIC マルチリンガル/ROECE (ラテン2); IBM EBCDIC マルチリンガルラテン2
874 windows-874 ANSI/OEM タイ語 (ISO 8859-11); タイ語 (Windows)
875 cp875 IBM EBCDIC モダンギリシャ語
932 shift_jis ANSI/OEM 日本語; 日本語 (Shift-JIS)
936 gb2312 ANSI/OEM 簡体字中国語 (PRC、シンガポール); 簡体字中国語 (GB2312)
949 ks_c_5601-1987 ANSI/OEM 韓国語 (統合ハングルコード)
950 big5 ANSI/OEM 繁体字中国語 (台湾; 香港 SAR、PRC); 繁体字中国語 (Big5)
1026 IBM1026 IBM EBCDIC トルコ語 (ラテン5)
1047 IBM01047 IBM EBCDIC ラテン1/Open System
1140 IBM01140 IBM EBCDIC 米国カナダ (037 + ユーロシンボル); IBM EBCDIC (米国カナダユーロ)
1141 IBM01141 IBM EBCDIC ドイツ語 (20273 + ユーロシンボル); IBM EBCDIC (ドイツユーロ)
1142 IBM01142 IBM EBCDIC デンマークノルウェー (20277 + ユーロシンボル); IBM EBCDIC (デンマークノルウェーユーロ)
1143 IBM01143 IBM EBCDIC フィンランドスウェーデン (20278 + ユーロシンボル); IBM EBCDIC (フィンランドスウェーデンユーロ)
1144 IBM01144 IBM EBCDIC イタリア (20280 + ユーロシンボル); IBM EBCDIC (イタリアユーロ)
1145 IBM01145 IBM EBCDIC ラテンアメリアスペイン (20284 + ユーロシンボル); IBM EBCDIC (スペインユーロ)
1146 IBM01146 IBM EBCDIC 英国 (20285 + ユーロシンボル); IBM EBCDIC (英国ユーロ)
1147 IBM01147 IBM EBCDIC France (20297 + ユーロシンボル); IBM EBCDIC (フランスユーロ)
1148 IBM01148 IBM EBCDIC インターナショナル (500 + ユーロシンボル); IBM EBCDIC (インターナショナルユーロ)
1149 IBM01149 IBM EBCDIC アイスランド語 (20871 + ユーロシンボル); IBM EBCDIC (アイスランドユーロ)
1200 utf-16 Unicode UTF-16、リトルエンディアンバイトオーダー (BMP of ISO 10646); 管理対象アプリケーションにのみ使用可能
1201 unicodeFFFE Unicode UTF-16、ビッグエンディアンバイトオーダー。管理対象アプリケーションにのみ使用可能
1250 windows-1250 ANSI セントラルユーロピアン; セントラルユーロピアン (Windows)
1251 windows-1251 ANSI キリル語; キリル語 (Windows)
1252 windows-1252 ANSI ラテン1; ウェスタンユーロピアン (Windows)
1253 windows-1253 ANSI ギリシャ語; ギリシャ語 (Windows)
1254 windows-1254 ANSI トルコ語; トルコ語 (Windows)
1255 windows-1255 ANSI ヘブライ語; ヘブライ語 (Windows)
1256 windows-1256 ANSI アラビア語; アラビア語 (Windows)
1257 windows-1257 ANSI バルト語; バルト語 (Windows)
1258 windows-1258 ANSI/OEM ベトナム語; ベトナム語 (Windows)
1361 Johab 韓国語 (Johab)
10000 macintosh MAC ローマ語; ウェスタンユーロピアン (Mac)
10001 x-mac-japanese 日本語 (Mac)
10002 x-mac-chinesetrad MAC 繁体中国語 (Big5); 繁体中国語 (Mac)
10003 x-mac-korean 韓国語 (Mac)
10004 x-mac-arabic アラビア語 (Mac)
10005 x-mac-hebrew ヘブライ語 (Mac)
10006 x-mac-greek ギリシャ語 (Mac)
10007 x-mac-cyrillic キリル語 (Mac)
10008 x-mac-chinesesimp MAC 簡体中国語 (GB 2312); 簡体中国語 (Mac)
10010 x-mac-romanian ルーマニア語 (Mac)
10017 x-mac-ukrainian ウクライナ語 (Mac)
10021 x-mac-thai タイ語 (Mac)
10029 x-mac-ce MAC ラテン2; セントラルユーロピアン (Mac)
10079 x-mac-icelandic アイスランド語 (Mac)
10081 x-mac-turkish トルコ語 (Mac)
10082 x-mac-croatian クロアチア語 (Mac)
12000 utf-32 Unicode UTF-32、リトルエンディアンバイトオーダー。管理対象アプリケーションにのみ使用可能
12001 utf-32BE Unicode UTF-32、ビッグエンディアンバイトオーダー。管理対象アプリケーションにのみ使用可能
20000 x-Chinese_CNS CNS 台湾; 繁体中国語 (CNS)
20001 x-cp20001 TCA 台湾
20002 x_Chinese-Eten Eten 台湾; 繁体中国語 (Eten)
20003 x-cp20003 IBM5550 台湾
20004 x-cp20004 TeleText 台湾
20005 x-cp20005 Wang 台湾
20105 x-IA5 IA5 (IRV インターナショナルアルファベット No. 5、7ビット); ウェスタンユーロピアン (IA5)
20106 x-IA5-German IA5 ドイツ語 (7ビット)
20107 x-IA5-Swedish IA5 スウェーデン語 (7ビット)
20108 x-IA5-Norwegian IA5 ノルウェー語 (7ビット)
20127 us-ascii US-ASCII (7ビット)
20261 x-cp20261 T.61
20269 x-cp20269 ISO 6937 非スペースアクセント
20273 IBM273 IBM EBCDIC ドイツ語
20277 IBM277 IBM EBCDIC デンマークノルウェー
20278 IBM278 IBM EBCDIC フィンランドスウェーデン
20280 IBM280 IBM EBCDIC イタリア語
20284 IBM284 IBM EBCDIC ラテンアメリアスペイン
20285 IBM285 IBM EBCDIC 英国
20290 IBM290 IBM EBCDIC 日本語カタカナ拡張
20297 IBM297 IBM EBCDIC フランス後
20420 IBM420 IBM EBCDIC アラビア語
20423 IBM423 IBM EBCDIC ギリシャ語
20424 IBM424 IBM EBCDIC ヘブライ語
20833 x-EBCDIC-KoreanExtended IBM EBCDIC 韓国語拡張
20838 IBM-Thai IBM EBCDIC タイ語
20866 koi8-r ロシア語 (KOI8-R); キリル語 (KOI8-R)
20871 IBM871 IBM EBCDIC アイスランド語
20880 IBM880 IBM EBCDIC キリルロシア
20905 IBM905 IBM EBCDIC トルコ語
20924 IBM00924 IBM EBCDIC ラテン1/Open System (1047 + ユーロシンボル)
20932 EUC-JP 日本語 (JIS 0208-1990および0212-1990)
20936 x-cp20936 簡体中国語 (GB2312); 簡体中国語 (GB2312-80)
20949 x-cp20949 韓国語 Wansung
21025 cp1025 IBM EBCDIC キリルセルビアブルガリア
21027 (非推奨)
21866 koi8-u ウクライナ語 (KOI8-U); キリル語 (KOI8-U)
28591 iso-8859-1 ISO 8859-1 ラテン1; ウェスタンユーロピアン (ISO)
28592 iso-8859-2 ISO 8859-2 セントラルユーロピアン; セントラルユーロピアン (ISO)
28593 iso-8859-3 ISO 8859-3 ラテン3
28594 iso-8859-4 ISO 8859-4 バルト語
28595 iso-8859-5 ISO 8859-5 キリル語
28596 iso-8859-6 ISO 8859-6 アラビア語
28597 iso-8859-7 ISO 8859-7 ギリシャ語
28598 iso-8859-8 ISO 8859-8 ヘブライ語; ヘブライ語 (ISO-Visual)
28599 iso-8859-9 ISO 8859-9 トルコ語
28603 iso-8859-13 ISO 8859-13 エストニア語
28605 iso-8859-15 ISO 8859-15 ラテン9
29001 x-Europa ヨーロッパ3
38598 iso-8859-8-i ISO 8859-8 ヘブライ語; ヘブライ語 (ISO-Logical)
50220 iso-2022-jp ISO 2022 日本語(半角カタカナは含まない); 日本語 (JIS)
50221 csISO2022JP ISO 2022 日本語(半角カタカナを含む); 日本語 (JIS-1バイトカナを許容)
50222 iso-2022-jp ISO 2022 日本語 JIS X 0201-1989; 日本語 (JIS-1バイトカナを許容 - SO/SI)
50225 iso-2022-kr ISO 2022 韓国語
50227 x-cp50227 ISO 2022 簡体中国語; 簡体中国語 (ISO 2022)
50229 ISO 2022 繁体中国語
50930 EBCDIC 日本語 (カタカナ) 拡張
50931 EBCDIC 米国カナダおよび日本語
50933 EBCDIC 韓国語拡張と韓国語
50935 EBCDIC 簡体字中国語拡張と簡体中国語
50936 EBCDIC 簡体中国語
50937 EBCDIC 米国カナダおよび繁体中国語
50939 EBCDIC 日本語 (ラテン) 拡張および日本語
51932 euc-jp EUC 日本語
51936 EUC-CN EUC 簡体中国語; 簡体中国語 (EUC)
51949 euc-kr EUC 韓国語
51950 EUC 繁体中国語
52936 hz-gb-2312 HZ-GB2312 簡体中国語; 簡体中国語 (HZ)
54936 GB18030 Windows XP およびこれ以降: GB18030 簡体中国語 (4バイト); 簡体中国語 (GB18030)
57002 x-iscii-de ISCII デーバナガリ語
57003 x-iscii-be ISCII バングラ語
57004 x-iscii-ta ISCII タミル語
57005 x-iscii-te ISCII テルグ語
57006 x-iscii-as ISCII アッサム語
57007 x-iscii-or ISCII オディア語
57008 x-iscii-ka ISCII カンナダ語
57009 x-iscii-ma ISCII マラヤラム語
57010 x-iscii-gu ISCII グジャラート語
57011 x-iscii-pa ISCII パンジャブ語
65000 utf-7 Unicode (UTF-7)
65001 utf-8 Unicode (UTF-8)

Windowsを日本語版で使っているならコードページは932になっているだろう。これはいわゆる日本語Shift-JISを拡張したものだ。

chcpコマンドの実行サンプル

現在ではシステムの多くが文字コードとしてUTF-8を使うようになっている。とりあえず文字コードをUTF-8に設定しておけば問題なく動作することが多い、といった状況にある。chcpを使うとすればUTF-8に変更するといった用途が実際のところは多いんじゃないかと思う(もちろん使い方にもよるが)。

chcpコマンドの主な使い方は次の通りだ。

現在設定されているコンソールコードページを表示

chcp

コンソールコードページを指定されたコードページへ変更

chcp コードページ

たとえば、日本語の設定で動作しているWindows 10であれば、コマンドプロンプトでchcpコマンドを実行すると次のようにコードページとして932が指定されていることが示される。

chcpコマンドで現在のコンソールコードページを表示

chcpコマンドの引数にコードページを指定すれば、そのコンソールコードページがそのコードページに切り替わる。

コンソールコードページをルーマニア語(Mac)に変更

コンソールコードページをUTF-8に変更

実際のところ、最近のWindows 10はコンソール回りの開発が進んでおり、この手の問題が発生することは減ってきている。こういうコマンドがあるんだ、といったことをなんとなくでも覚えておいてもらえればと思う。

参考資料