質問: gets.chomp! else puts "エラーです。プログラムを終了します。" exit end ``` サクラエディタ ver 2.2.0.1 文字コード UTF-8 win 10 自分なりに調べましたが、解決に至らずここで初めて質問させて頂きました。 どなたかご教授お願いいたします。
回答: コメントにて解決されたようなので、改めて回答として投稿しておきます。 原因 この現象は、 Windows 10 October Update (version 1809) ならびに Windows Server version 1809 で導入された、新しいコンソールにおいて発生する不具合で、出力ストリームに紐づけられた内部的なコードページテーブルの初期化処理に不足があり、**内部処理でマルチバイト文字を正しく認識出来ないことが原因**のようです1。 解決策 この不具合の解決策は、以下の 3 つが挙げられます。 ### 1. コンソールにてレガシー コンソールを使用する 上記バージョンからコンソールの仕様が変わり、新しいコンソールが導入されました。今回の不具合は、この新しいコンソールにおいて発生するので、以前のコンソールを使えば問題は解決します。 以前のコンソールは**レガシー コンソール**として残っていますが、これを使用するには、以下のような手順でコンソールの設定を変更する必要があります。 1. コマンドプロンプトを起動 2. 「プロパティ」から「レガシー コンソールを使用する」にチェックを入れる 3. コマンドプロンプトを閉じて再起動する ( パソコン自体の再起動は不要 ) なお、レガシー コンソールを使う場合、**一部の最新機能が使えなくなる**点に注意が必要です。 ### 2. アプリケーションの初期化処理などで、明示的にロケールの設定を行なう 問題の不具合は、初期化処理の不足が原因で発生しているので、アプリケーションの初期化処理で `setlocale` 関数等を利用して、**明示的にロケールの設定を行なう**ことで不具合を解消出来ます。 ### 3. 次期バージョンの OS (19H1) まで待つ この不具合は既にマイクロソフトが認識しており、次期バージョンで修正される予定となっています。そのため、時期バージョンまで待つことで解決出来ると思います。 また、 KB4490481 (OS Build 17763.404) 以降では既に修正されているという情報があるので、該当の更新プログラムを適用することで解決出来るかもしれません2。 参考: * バージョン 1809 の OS 上でコンソール出力が正しく表示されない問題について * Windows(Version 1809)上でコンソール出力が正しく表示されない問題による製品への影響について:製品使用上の注意事項:日立