このページの本文へ

前へ 1 2 次へ

Windows Info 第164回

Windows Subsystem for LinuxとWindows内の文字コード

2019年03月17日 10時00分更新

文● 塩田紳二 編集● ASCII編集部

  • この記事をはてなブックマークに追加
  • 本文印刷

WSLはWin32との文字コードの違いにどう対応しているか?

 Windows Subsystem for Linux(WSL)には、Win32相互運用性と呼ばれる機能があり、WSLのbashから直接Win32プログラムを起動することができる。WSLのLinuxディストリビューションは、標準の文字コードとしてUTF-8を使うのに対して、Win32プログラムの標準の文字コードは、日本語版Windowsの場合ではShift-JISである。

 しかし、WSLやCMD.EXE(コマンドプロンプトウィンドウ)では、お互いをパイプで接続してコマンドを連続して動作させることが可能だ。このときWSLは、コマンドラインを見て、Win32プログラムが適切な文字コードを出力できるように調整をおこなう。具体的には、以下の3つの場合が考えられる。

1. Win32プログラムの標準出力がコンソールに接続しているとき
2. Win32プログラムの標準出力がLinux側のコマンドの標準入力に接続しているとき
3. Win32プログラムが標準出力を利用していないとき(Win32 GUIアプケーションの場合)

 「1」の場合、日本語版Windowsでは、Win32コマンドからはShift-JISコードを含んだ文字列が出力される可能性が高い。このときのWSLは、コンソールに出力される文字コードをUTF-8に変換して表示する。なお、現在のコンソールウィンドウは、内部でUTF-8コードを使っている。

 「2」の場合、WSLはWin32コマンドが動作する環境を変更し、コードページに65001(UTF-8)を指定してWin32コマンドを起動する。これにより、Win32コマンドはUTF-8コード、実際にはメッセージが英語となり、ASCIIコードを出力する。UTF-8は、ASCIIコードの範囲では一致しており、この範囲の文字は正しく表示できる。

 「3」の場合、WSLから標準入出力を使って直接データを渡すことはできず、必ずファイルを介したものになる。このため、WSL側で作られるUTF-8への対応は、アプリごとに違ってくる。たとえば、メモ帳はすでにUTF-8に対応しているため、WSL側のコマンドが出力したUTF-8のファイルをそのまま開くことが可能だ。

MS-DOS時代に作られたコードページって何?

 コードページとは、MS-DOSの時代に作られたコンソールにおいて、複数言語を扱うためのものだ。現在Linuxなどで使う「ロケール」に似た概念だが、そもそも、ハードウェアで文字を表示させていた時代のものなので、文字コードを指定するものになっている。

 コードページは数字で表現され、たとえば日本語のShift-JISを使う環境では932というコードページが使われる。これに対してオリジナルのIBM PCでは、コードページ437が使われている。もともとコードページ437は、IBM PC用のCGA~VGAなどのハードウェアで文字を表示させる環境のための文字コードでASCIIコードが基本。ただしハードウェア的には、0~255までの文字コードに表示可能な文字が対応しており、ビデオメモリに書かれたコードに対応した文字が表示される。当初のコードページは、ハードウェアのフォント(ビデオ回路のキャラクタジェネレーター)を区別するためのものだった。

 その後のWindowsでは、TrueTypeなどのフォントを利用できるようになり、現在のコードページからは、フォントを指定するという意味は失われている。なので、コードページは437でも表示フォントはMSゴシックといった設定が可能である。Windows 10でも、ラスターフォントを指定すると、IBM PCが持っていたフォント(ASCIIコード外の文字を含む)を表示させることができる。

コンソールでコードページ437を指定し、フォントでラスターフォントを選ぶと、IBM PCのCGAなどで使っていたトランプのマークなどのシンボルを表示できるようになる

ただし、日本語版Windowsの場合、ラスターフォントでも半角カナを表示しShift-JISを表示しようとする。英語版Windowsでは、IBM PCのCGAなどと同じく半角カナの領域にアクセント記号付き文字などが割り当てられている

 Windows 10のコンソールでは、個々のWindowsの標準的なコードページ以外も選択可能だが、その動作は実行するアプリケーションに依存する。サポートされているコードページの1つが65001で、この場合はコードエンコード方式にUTF-8が使われる。正しくUTF-8に対応したアプリケーションであれば、文字はUTF-8コードで出力される。しかし多くの場合、アプリケーションはメッセージを英語で出力する。これは、UTF-8とASCIIコードがASCII文字の範囲では一致しているからだ。

 コードページは、日本語や同じ1バイトコードでもアルファベットに違いのあるヨーロッパ系の言語などに対応するために作られた。ただし、ソフトウェアの互換性を保つために、コードページや他国語をまったく考慮していないアプリケーションがあったときに、英語環境にも設定できるようになっていた。

 コンソールのコードページは、chcpコマンド(C:\Windows\System32\chcp.com)で表示させることができる。これをWSLから起動すれば、実行環境のコードページを調べることができるはずだ。ただし、Windows 10 Ver.1809(RS5)の場合、標準出力に何も接続しない場合には、コードページとしてゼロが表示され、パイプ記号でmoreコマンド(Linuxのコマンド)と接続した場合には、65001が表示された。

日本語版Windows 10 RS5のWSLでchcp.comを起動すると標準出力に何も接続されていないときにはコードページが0と報告される。標準出力に何か接続すると、コードページは65001(UTF-8)に切り替わる

 ただし、Windows 10 Ver.1903(19H1)では、標準出力に何も接続しなかった場合には、932(日本語Shift-JIS)が表示されるようになった。このあたり、ちゃんと処理されるようになったようだ。chcpは、おそらくシステムコールでコードページを取得しているだけなので、Windows側の問題だと思われる。

次期Windows 10の19H1では、chcp.comは正しくコードページ932を報告する

 このように、WSLでは、文字コードで問題が起きないように標準出力の状態を見て、コードページを切り替える。そのためコマンドを単独で実行させると、日本語が出るのに、パイプやリダイレクトでは英語メッセージとなることがある。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事
1
Apple 2026 MacBook Air M5チップ搭載13インチノートブック:AIとApple Intelligence、13.6インチLiquid Retinaディスプレイ、16GBユニファイドメモリ、512GB SSDストレージ、12MPセンターフレームカメラ、Touch ID - シルバー
Apple 2026 MacBook Air M5チップ搭載13インチノートブック:AIとApple Intelligence、13.6インチLiquid Retinaディスプレイ、16GBユニファイドメモリ、512GB SSDストレージ、12MPセンターフレームカメラ、Touch ID - シルバー
¥177,333
2
Lenovo ノートパソコン パソコン IdeaPad Slim 3 15.3インチ 第13世代 インテル® Core™ i5 プロセッサー搭載 13420H メモリ16GB SSD512GB MS Office 2024搭載 Windows11 バッテリー駆動16.9時間 重量1.59kg ルナグレー 83K100G4JP ノートPC
Lenovo ノートパソコン パソコン IdeaPad Slim 3 15.3インチ 第13世代 インテル® Core™ i5 プロセッサー搭載 13420H メモリ16GB SSD512GB MS Office 2024搭載 Windows11 バッテリー駆動16.9時間 重量1.59kg ルナグレー 83K100G4JP ノートPC
¥107,800
3
【Amazon.co.jp限定】Lenovo Chromebook クロームブック Duet 11 10.95インチ MediaTek Kompanio 838 プロセッサー​搭載 メモリ8GB eMMC 128GB 重量1.0kg 83HH000TJP パソコン
【Amazon.co.jp限定】Lenovo Chromebook クロームブック Duet 11 10.95インチ MediaTek Kompanio 838 プロセッサー​搭載 メモリ8GB eMMC 128GB 重量1.0kg 83HH000TJP パソコン
¥62,919
4
【整備済み品】富士通 ノートパソコン LIFEBOOK U9310 13.3型FHD(1920x1080) 超軽薄 ノートPC/第10世代 Core i5-10310U@1.7GHz/ 8GB メモリ/高速ストレージ SSD/Webカメラ/WIFI/Type-C/HDMI/win11&MS Office 2019 搭載 ビジネス 在宅勤務向け パソコン (メモリ:8GB/SSD:256GB)
【整備済み品】富士通 ノートパソコン LIFEBOOK U9310 13.3型FHD(1920x1080) 超軽薄 ノートPC/第10世代 Core i5-10310U@1.7GHz/ 8GB メモリ/高速ストレージ SSD/Webカメラ/WIFI/Type-C/HDMI/win11&MS Office 2019 搭載 ビジネス 在宅勤務向け パソコン (メモリ:8GB/SSD:256GB)
¥36,970
5
【整備済み品】中古ノートパソコン 東芝Bシリーズ B55/B65 Windows11搭載 Core i5-6200U /メモリ8GB/SSD128GB/15.6インチ/Bluetooth/WIFI/HDMI/USB3.0/DVDドライブ/MS & Office2019/テンキー搭載/仕事用ノート (Bシリーズi5-6/メモリ8GB/SSD128GB)
【整備済み品】中古ノートパソコン 東芝Bシリーズ B55/B65 Windows11搭載 Core i5-6200U /メモリ8GB/SSD128GB/15.6インチ/Bluetooth/WIFI/HDMI/USB3.0/DVDドライブ/MS & Office2019/テンキー搭載/仕事用ノート (Bシリーズi5-6/メモリ8GB/SSD128GB)
¥15,990

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

ASCII倶楽部

注目ニュース

  • 角川アスキー総合研究所

プレミアム実機レビュー

ピックアップ
1
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
¥1,980
2
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
¥1,890
3
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
¥740
4
UGREEN USB Type Cケーブル PD対応 100W/5A 超急速充電 USB C ナイロン編み 断線防止 iphone17/16/15シリーズ/iPad/MacBook Pro/Galaxy S24/Matebook/iPad/Xperia等USB-C各種対応(1m, ブラック)
UGREEN USB Type Cケーブル PD対応 100W/5A 超急速充電 USB C ナイロン編み 断線防止 iphone17/16/15シリーズ/iPad/MacBook Pro/Galaxy S24/Matebook/iPad/Xperia等USB-C各種対応(1m, ブラック)
¥743
5
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
¥1,100
6
KIOXIA(キオクシア)【日本製】SDカード 128GB SDXC UHS-I Class10 読出速度100MB/s 国内正規品 メーカー保証5年 KLNEA128G
KIOXIA(キオクシア)【日本製】SDカード 128GB SDXC UHS-I Class10 読出速度100MB/s 国内正規品 メーカー保証5年 KLNEA128G
¥1,880
7
エレコム 電源タップ 6個口 3m 雷ガード 個別スイッチ ほこりシャッター付 耐熱 PSE技術基準適合 ホワイト T-K6A-2630WH
エレコム 電源タップ 6個口 3m 雷ガード 個別スイッチ ほこりシャッター付 耐熱 PSE技術基準適合 ホワイト T-K6A-2630WH
¥1,899
8
キヤノン Canon 純正 インクカートリッジ BCI-381(BK/C/M/Y)+380 5色マルチパック BCI-381+380/5MP 長さ:5.3cm 幅:13.9cm 高さ:10.75cm
キヤノン Canon 純正 インクカートリッジ BCI-381(BK/C/M/Y)+380 5色マルチパック BCI-381+380/5MP 長さ:5.3cm 幅:13.9cm 高さ:10.75cm
¥4,918
9
エルパ(ELPA) 扉付タップラン 電源タップ 延長コード 125V 3m 3個口 ホワイト WBT-N3030B(W)
エルパ(ELPA) 扉付タップラン 電源タップ 延長コード 125V 3m 3個口 ホワイト WBT-N3030B(W)
¥652
10
UGREEN LANケーブル CAT8 1M メッシュLANケーブル カテゴリー8 コネクタ 超光速40Gbps/2000MHz CAT8準拠 イーサネットケーブル 爪折れ防止 シールド モデム ルータ PS3 PS4 Xbox等に対応 1M
UGREEN LANケーブル CAT8 1M メッシュLANケーブル カテゴリー8 コネクタ 超光速40Gbps/2000MHz CAT8準拠 イーサネットケーブル 爪折れ防止 シールド モデム ルータ PS3 PS4 Xbox等に対応 1M
¥699

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

デジタル用語辞典

ASCII.jpメール デジタルMac/iPodマガジン