rubyのgetsに関する質問です
getsで値を入力するときに半角英数字で入力する際は問題なく入力できるのですが、
全角入力しようとすると正しく実行できません
puts "a" a = gets.chomp puts "b" b = gets.chomp puts "c" c = gets.chomp puts "#{a}#{b}#{c}"
これを実行した際半角入力でa:a b:i c:uを入力すると
aの入力 a bの入力 i cの入力 u aiu
と正常に入力できるのですが全角入力でa:あ b:い c:う と入力しようとすると
aの入力のあとにエンターを押しても進まず、もう一回押すと一気にcの入力になり以下のように
正しく入力できません。
aの入力 あ bの入力 cの入力 う 、�あ、�う
これは何が原因なのでしょうか
windows7
ruby 2.5.1p57 (2018-03-29 revision 63029) [x64-mingw32]
にて再現せず
ご利用の環境について説明いただけますと、試せる人もいるかもしれません。
文字変換確定のEnterを押し損ねて2つになっているのでは?
あ、い、うを、コピペで貼り付けてみたらどうなりますか?
あと、これはプログラムの全体ですか?省略している部分はない?
windows10
ruby 2.5.3p105 (2018-10-18 revision 65156) [x64-mingw32]
です。
正確に言うとEnterを一回押すともう一度入力待ちの状態になり、
もう一度Enterを押すと一気にcの入力に進みます。
また、これがプログラム全体です。他のプログラムで入力がうまくいかないため、
入力の部分だけ別のファイルで再現してみたところです。
コピーして貼り付けを試してみましたが、同じ結果となりました。
どこからどうやって実行していますか?
コマンドプロンプトで、「ruby ファイル名」で実行しているのでないのなら、実行環境に問題があると思われます。
回答遅れてすいません。
コマンドプロンプトでの実行です。
当初の質問とずれますが、コマンドプロンプト以外ではどのような実行方法が
あるのでしょうか。
私の環境では再現します。
Windows10
cmd.exe
ruby 2.5.3p105 (2018-10-18 revision 65156) [x64-mingw32]
以前似た質問をされている方がいました⇒https://teratail.com/questions/173321
昔は、日本語の表示ができていた記憶があります。
解決方法はわかりません。(あと私の環境では、irbに日本語を入力→エンターを押すと消えます)
コマンドプロンプト以外↓
Windowsで使えるターミナルとシェルのまとめ
https://qiita.com/Ted-HM/items/9a60f6fcf74bbd79a904
> コマンドプロンプト以外ではどのような実行方法があるのでしょうか。
なんらかのIDE(統合開発環境)からの実行。
p Encoding.default_external
は何になっていますか?
あと、関係ないような気はしますが、念のため、IMEは何ですか?
私もirbにの日本語を入力すると消える現象が起きました。
IMEはマイクロソフトIMEです。
Encoding.default_externalについてある程度調べたのですが、
確かめ方がわからなかったのですがどうすれば良いのでしょうか。
> 確かめ方
p してください。
#<Encoding:Windows-31J> でした。
Windows10固有の問題ですかね。
ruby-list で相談してみて下さい。↓
https://www.ruby-lang.org/ja/community/mailing-lists/
ありがとうございます。
それとcloud9を導入して同じプログラムを試したら当然ですがエラーは出ませんでした。
ようやく次に進めます。IDEの件も含めてご回答ありがとうございました。
試せてないのでわかりませんが
https://teratail.com/questions/170295#reply-253880
win10になんらかの仕様変更(もしくはバグ)があるのかもしれませんね
回答1件
あなたの回答
tips
プレビュー