Gauche:Windowsコンソール対応
Windowsコンソール対応
Gauche の Windows コンソールのコードページ対応
- Gauche は v0.9.6 から、Windows コンソールのコードページに対応しています。
これによって、コマンドプロンプトで、文字化けせずに日本語の表示や入力が可能になります。
(関連プルリクエスト: https://github.com/shirok/Gauche/pull/311 )
- 本機能は、標準入出力のポートをラップして、文字コードを変換しながら読み書きすることで実現しています。
このため、若干のパフォーマンス低下が起こります。
(Gauche:Windowsコンソール関連 の msjis モジュールと、ロジックはほぼ同じです)
- 本機能は、以下の環境変数によってカスタマイズが可能です。
(通常は、特に設定する必要はありません)
- GAUCHE_WINDOWS_CONSOLE_RAW
この環境変数が存在する場合、Windows コンソールのコードページサポートは無効になります。
パフォーマンスが気になる場合に、この環境変数を設定することで、変換を行わないようにできます。
(ただし、コマンドプロンプトでは、日本語の文字化けが発生します)
また、この環境変数が存在する場合、以下の環境変数はすべて無視されます。
- GAUCHE_WINDOWS_CONSOLE_CES
Windows コンソールのコードページに対応する ces (文字エンコーディングスキーム) を、
明示的に指定する場合に使用します(sjis や utf-8 のように指定します)。
この環境変数が存在しない場合、ces は現在のコードページに従って自動設定されます。
- GAUCHE_WINDOWS_CONSOLE_API
この環境変数が存在する場合、Gauche は Windows API の ReadConsole/WriteConsole を使って
Windows コンソールにアクセスします。
この環境変数が存在しなければ C 言語の read/write を使用します。
例外として、ces が自動設定されて utf-8 だった場合には、Windows コンソールのバグを回避するため、
(環境変数を無視して) Windows API の ReadConsole/WriteConsole を使用します。
- その他
- gosh -ftest で起動した場合には、Windows コンソールのコードページサポートは無効になります。
(Gauche のビルド時に、一部のファイルが使用中で消せない問題が出たため)
- gosh -ftest で起動した場合には、Windows コンソールのコードページサポートは無効になります。
- 標準入出力のポートがラップされているかどうかは、以下のコードで判定できます。
(port-attribute-ref port 'windows-console-conversion #f)
上記の port のところには、(current-input-port) 等を指定してください。
ポートがラップされていれば #t が返ります。
hamayama(2017/09/30 05:33:29 UTC)(2017/10/18 11:33:40 UTC)
(2018/07/07 13:27:42 UTC)