前提・実現したいこと
コマンドプロンプト上で文字列を入力すると、その文字列が含まれたファイルを読み込む、その文字列が含まれるファイルを新規作成するというプログラムを実現しようとしています。言語はRubyです。
発生している問題・エラーメッセージ
Traceback (most recent call last): 1: from C:/Users/Sazanami/卒論/sample.rb:2:in `<main>' C:/Users/Sazanami/卒論/sample.rb:2:in `encode': "\xFF" on Windows-31J (Encoding::InvalidByteSequenceError)
Encoding::InvalidByteSequenceError(文字列がそのエンコーディングにおいて不正なバイト列である場合に発生する例外)というエラーが発生してしまいます。(文字コードが正しく変換されていないということだと思います)
該当のソースコード
Ruby
1# encoding: UTF-8 2filename = gets.chomp.encode(Encoding::UTF_8) #ここで入力した文字コードをwindows-31Jからutf-8に変換したい 3File.open("結合結果_" + filename + ".log","r",:encoding => Encoding::UTF_8, :invalid => :replace, :undef => :replace) do |io| 4 File.open("台詞集_" + filename + ".txt", "w") do |f| 5 io.each_line do |line| 6 episode = line.chomp 7 episode.scan(/([「『])(.*?)([」』])/) do |a,b,c| 8 serif = a + b + c 9 f.puts serif 10 end 11 end 12 end 13end 14
試したこと
上のコードの2行目を以下のようにしました。
Ruby
1filename = gets.chomp.encode('utf-8') #ここで入力した文字コードをwindows-31Jからutf-8に変換したい
→結果は同じでした。
補足情報(FW/ツールのバージョンなど)
Rubyのバージョンは2.5.7です。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/21 04:31