コマンドプロンプトから起動して、検索ワードを入力すると自動でWebから検索してくれる仕組みをRubyで構築しています。
その仕組みの構築のためgets.chompを入れているのですが、日本語の場合のみ、想定外の文字が挿入されてしまう症状が出て困っています。
chcp値932(Shift_JIS)
Windows 10 Home
Ruby 2.3.3
ruby
1Encoding.default_external = Encoding::UTF_8 2 3require 'selenium-webdriver' 4require 'csv' 5require 'nkf' 6require 'uri' 7p "検索ワードを入力してください" 8search_word = gets.chomp 9 10require 'debug' 11 12以下略
例えば、上記プログラムを起動して【あああああ】と入力、debugで動作を止めて
ruby
1puts search_word.force_encoding('SJIS')
と入力したところ
ruby
1??あああああ
と出力されてしまいます。(「?」は背景がダイヤの形をしている文字化けしたときによく出る記号です)
この文字化けの部分を調べるため文字コードを調べたところ
ruby
1"¥xA0xFF¥x82¥xA0¥x82¥xA0¥x82¥xA0¥x82¥xA0¥x82¥xA0"
と出力されました。おそらく¥xA0xFFが怪しいのだと思うのですが、こちらを16進数変換などで調べても解決しませんでした。
また、【検索ワード】と入力して同様の処理をしてみたところ、
ruby
1??検索ワード
と同じく出力されてしまいます。
そして、文字コードを調べたところ、
ruby
1"¥x9F¥xFF¥x8C¥x9F¥x8D¥xF5¥x83¥x8F¥x81[¥x83h"
と出力されました。こちらはおそらく¥x9F¥xFFが怪しいです。
英字や数字のみのWordを入力した場合には問題なく入力されます。
文字入力の際にひらがな入力にするために「半角/全角」を押していたのでそれをやめてみたのですが変化はありませんでした。
この文字の正体と原因を教えていただけないでしょうか。よろしくお願いいたします。m(_ _)m
追記
ruby
1search_word.encoding('SJIS')
でエンコードを確認すると
ruby
1<Encoding:UTF-8>
と表示されますので、文字コードに問題があるわけではないのかなと思います。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。