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

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

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

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

Q&A

解決済

1回答

421閲覧

コマンドプロンプトで文字化けしてしまう

1SozEri4TqBCkFD

総合スコア9

Ruby

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

0グッド

0クリップ

投稿2020/06/01 10:57

前提・実現したいこと

コマンドプロンプトで実行したところ
1.蔵書データを入力(BookInfoManagerクラスのrun中のnum)を選択
→キー、書籍名などすべて入力
→書籍名のところで文字化け
が起きてしまいます。
文字化けをなくすにはどうすれば良いのでしょうか。

発生している問題・エラーメッセージ

該当のソースコード

Ruby

1# -*- coding: utf-8 -*- 2require 'date' 3 4class BookInfo 5 def initialize(title, author, page, publish_date) 6 @title = title 7 @author = author 8 @page = page 9 @publish_date = publish_date 10 end 11 12 attr_accessor :title, :author, :page, :publish_date 13 14 def to_s 15 "#{@title}, #{@author}, #{@page}, #{@publish_date}" 16 end 17 18 def toFormattedString(sep = "\n") 19 "書籍名:#{@title}#{sep}著者名:#{@author}#{sep}ページ数:#{@page}ページ#{sep}発刊日:#{@publish_date}#{sep}" 20 end 21end 22 23class BookInfoManager 24 def initialize 25 @book_infos = {} 26 end 27 28 def setUp 29 @book_infos["Horie2019"] = BookInfo.new( 30 "有り金は全部使え", 31 "堀江貴文", 32 278, 33 Date.new(2019,5,24) 34 ) 35 @book_infos["Higashino2018"] = BookInfo.new( 36 "秘密", 37 "東野圭吾", 38 198, 39 Date.new(2018,9,1) 40 ) 41 end 42 43 def addBookInfo 44 book_info = BookInfo.new("", "", 0, Date.new) 45 print "\n" 46 print "キー:" 47 key = gets.chomp 48 print "書籍名:" 49 book_info.title = gets.chomp 50 print "著者名:" 51 book_info.author = gets.chomp 52 print "ページ数:" 53 book_info.page = gets.chomp.to_i 54 print "発刊年:" 55 year = gets.chomp.to_i 56 print "発刊月:" 57 month = gets.chomp.to_i 58 print "発刊日:" 59 day = gets.chomp.to_i 60 book_info.publish_date = Date.new( year, month, day ) 61 62 @book_infos[key] = book_info 63 end 64 65 def listAllBookInfos 66 puts "\n-------------------" 67 @book_infos.each do |key, value| 68 print value.toFormattedString 69 puts "\n-------------------" 70 end 71 end 72 73 def run 74 while true 75 print " 76 1.蔵書データの登録 77 2.蔵書データの表示 78 9.終了 79 番号を選んでください(1,2,9:" 80 81 num = gets.chomp 82 case 83 when '1' == num 84 addBookInfo 85 when '2' == num 86 listAllBookInfos 87 when '9' == num 88 break; 89 else 90 91 end 92 end 93 end 94 95end 96 97book_info_manager = BookInfoManager.new 98 99book_info_manager.setUp 100 101book_info_manager.run

試したこと

1行目に # -- coding: utf-8 -- と書くのを忘れていて
追加しましたが変化はありませんでした。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

内部データがutf-8なので、

Ruby

1book_info.title = gets.chomp.encode("utf-8")

のように変換します。

投稿2020/06/01 11:22

otn

総合スコア84555

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

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

otn

2020/06/01 11:26

> 1行目に # -*- coding: utf-8 -*- と書くのを忘れていて これが必要だったのはRuby1.9だけで、2.0以降はデフォルトがutf-8なので不要です。
1SozEri4TqBCkFD

2020/06/01 13:20

1.9だけだったんですね、ありがとうございます。 ご指摘通りに変換しましたが、何も変わらなかったです。 全角で入力すると文字化けします。 半角で英数字を入力すると起きません。
otn

2020/06/01 13:33

もしかして、環境変数のRUBYOPTを -Eutf-8 と設定していますか?
1SozEri4TqBCkFD

2020/06/01 14:40

RUBYOPTを utf-8 に変更したところ改善されました! ありがとうございましたm(_ _)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問