前提・実現したいこと
コマンドプロンプト上で日本語を受け取り、受け取った結果を表示できるようにしたいです。
rubyのgetsメソッドを用いて実現しようとすると制御文字らしいものまで表示するようになってしまい、getsメソッドの挙動までおかしくなってしまいました。
コマンドプロンプトの文字コードはShift_JISで、ソースコードはUTF-8です。encodeメソッドでUTF-8に変換してもうまくいきません。
発生している問題・エラーメッセージ
- 実行結果
$ruby teststdin.rb あいうえお Traceback (most recent call last): 1: from teststdin.rb:2:in `<main>' teststdin.rb:2:in `encode': "\xA0" on Windows-31J (Encoding::InvalidByteSequenceError)
- 問題点
getsメソッドで”あいうえお”を受け取っても実行されずもう一度エンターキーを押さないと実行されない。
該当のソースコード
Ruby
1# -*- coding: utf-8 -*- 2s1 = gets.chomp.encode("utf-8") 3puts s1
試したこと
chcp 65001のコマンドでコマンドプロンプトの文字コードをUTF-8に変えても文字化けしてしまいうまくいきませんでした。
補足情報(FW/ツールのバージョンなど)
Rubyのバージョンは2.5.1,OSはWindows [Version 10.0.17134.165]です。
また実行結果は入力する文字によってエラーメッセージがわずかに変わりました。
- 例
$ruby teststdin.rb かきくけこ Traceback (most recent call last): 1: from teststdin.rb:2:in `<main>' teststdin.rb:2:in `encode': "\xFF" on Windows-31J (Encoding::InvalidByteSequenceError)
質問が既に解決されているようなので、ベストアンサーの選択、もしくは自己回答を行って質問を解決済みにしていただけませんか?