質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

GET

GETとはHTTPが対応するリクエストメソッドの一つです。クライアントからサーバーへ送られたURLパラメータのデータを取得する時必要がある時に使われます。

Q&A

解決済

1回答

921閲覧

rubyのgetsの全角入力のエラーについて

tyobi

総合スコア18

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

GET

GETとはHTTPが対応するリクエストメソッドの一つです。クライアントからサーバーへ送られたURLパラメータのデータを取得する時必要がある時に使われます。

1グッド

2クリップ

投稿2019/02/27 16:15

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の入力 う 、�あ、�う

これは何が原因なのでしょうか

DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

asm

2019/02/27 17:57

windows7 ruby 2.5.1p57 (2018-03-29 revision 63029) [x64-mingw32] にて再現せず ご利用の環境について説明いただけますと、試せる人もいるかもしれません。
otn

2019/02/27 23:57

文字変換確定のEnterを押し損ねて2つになっているのでは? あ、い、うを、コピペで貼り付けてみたらどうなりますか?
otn

2019/02/28 00:36

あと、これはプログラムの全体ですか?省略している部分はない?
tyobi

2019/03/01 07:28

windows10 ruby 2.5.3p105 (2018-10-18 revision 65156) [x64-mingw32] です。
tyobi

2019/03/01 07:30

正確に言うとEnterを一回押すともう一度入力待ちの状態になり、 もう一度Enterを押すと一気にcの入力に進みます。 また、これがプログラム全体です。他のプログラムで入力がうまくいかないため、 入力の部分だけ別のファイルで再現してみたところです。
tyobi

2019/03/01 07:31

コピーして貼り付けを試してみましたが、同じ結果となりました。
otn

2019/03/01 09:27

どこからどうやって実行していますか? コマンドプロンプトで、「ruby ファイル名」で実行しているのでないのなら、実行環境に問題があると思われます。
tyobi

2019/03/02 09:01

回答遅れてすいません。 コマンドプロンプトでの実行です。 当初の質問とずれますが、コマンドプロンプト以外ではどのような実行方法が あるのでしょうか。
退会済みユーザー

退会済みユーザー

2019/03/02 09:52

私の環境では再現します。 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
otn

2019/03/02 11:41

> コマンドプロンプト以外ではどのような実行方法があるのでしょうか。 なんらかのIDE(統合開発環境)からの実行。
otn

2019/03/02 11:52

p Encoding.default_external は何になっていますか? あと、関係ないような気はしますが、念のため、IMEは何ですか?
tyobi

2019/03/02 13:33

私もirbにの日本語を入力すると消える現象が起きました。
tyobi

2019/03/02 13:37

IMEはマイクロソフトIMEです。 Encoding.default_externalについてある程度調べたのですが、 確かめ方がわからなかったのですがどうすれば良いのでしょうか。
otn

2019/03/02 14:15

> 確かめ方 p してください。
tyobi

2019/03/02 15:34

#<Encoding:Windows-31J> でした。
tyobi

2019/03/02 17:17

ありがとうございます。 それとcloud9を導入して同じプログラムを試したら当然ですがエラーは出ませんでした。 ようやく次に進めます。IDEの件も含めてご回答ありがとうございました。
guest

回答1

0

ベストアンサー

コマンドプロンプトをレガシコンソールにすればひとまず直ります。

  1. コマンドプロンプトを起動する。
  2. タイトルバーを右クリックして「プロパティ」を押下する。
  3. 「レガシ コンソールを使用する」にチェックを入れて「OK」を押下する。
  4. コマンドプロンプトを全て閉じて、起動しなおす。※パソコンの再起動は不要

なお、設定は全てのコマンドプロンプト(PowerShellを含む)に影響を与えます。レガシコンソールは一部の最新機能が使えなくなり、高DPIのディスプレイを使用している場合の拡大表示や透明化などが無効化されることに注意してください。

原因はWindows 10のあるバージョン(どれかは忘れた)からコマンドプロンプトのコンソールの仕様が変わったことと思われます。以前の仕様のコンソールはレガシコンソールとして残っていますが、ユーザーが上記のように設定する必要があります。Ruby Issuesに問題が上がっていたような気がしたのですが、見つけられませんでした。

投稿2019/03/09 15:14

raccy

総合スコア21733

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問