###前提・実現したいこと
宜しくお願いします。下記のようなエラーが出ました。
ユーザーがレビューや名前等を入力した後、確認用に出力されるの時に
下記のエラーメッセージが出現します。
日本語入力して、確認用にも日本語で出力されるようにしたいですが
何卒ご教授の程宜しくお願いします。
###発生している問題・エラーメッセージ
review02.rb:20:in post_review': incompatible character encodings: UTF-8 and Windows-31J (Encoding::CompatibilityError) from review02.rb:73:in
<main>'
###該当のソースコード
coding: utf-8
def post_review(a_post)
Define variables
dotline = "---------------------------"
Define hash post
post = {}
#User input field
puts "名前を入力してください"
post[:name] = gets.chomp
puts "ジャンルを入力してください"
post[:genre] = gets.chomp
puts "タイトルを入力してください"
post[:title] = gets.chomp
puts "感想を入力してください"
post[:review] = gets.chomp
puts "名前 : #{post[:name]}\n#{dotline}"
puts "ジャンル : #{post[:genre]}\n#{dotline}"
puts "タイトル : #{post[:title]}\n#{dotline}"
puts "感想 : \n #{post[:review]}\n#{dotline}"
#ユーザーが入力したものをハッシュに入れひとくくりとし、次に配列に入れて番号で管理をする為
a_post << post
#a_postをメソッドの呼び出し元に返す
return a_post
end
def read_reveiw(a_post)
show list
number = 0
a_post.each do |post|
puts "[#{number}] : #{post[:title]}のレビュー"
number += 1
end
puts "見たいレビュー番号を入力してください"
input = gets.to_i #userの番号入力待ち
#post変数に、指定した番号の配列を代入する
post = a_post[input]
#show reviews
dotline = "//////////////////////////////"
puts "名前 : #{post[:name]}\n#{dotline}}"
puts "ジャンル : #{post[:genre]}\n#{dotline}"
puts "タイトル : #{post[:title]}\n#{dotline}"
puts "レビュー :\n#{post[:review]}\n#{dotline}"
end
def exit_appli
exit
end
def exception
puts "無効な数字が入力されました"
end
#Difine an array 配列を使う理由は、ハッシュだけであると、複数回の入力が想定されている以上、Keyに対してのバリューが毎回上書きされてしまい、複数個のレビューを登録することができない為、keyとバリューをくくり、番号で管理できる配列を使う
posts = []
while true do
#Show menu
puts "レビュー数 : #{posts.length}"
puts "[0]レビューを書く"
puts "[1]レビューを読む"
puts "[2]アプリを終了する"
input = gets.to_i
#Conditional branch
if input == 0 then #reviewを投稿する
posts = post_review(posts)
elsif input == 1 then
read_reveiw(posts)
elsif input == 2 then
exit_appli
else
exception
end
end
###試したこと