a3t3mbk’s blog

元”theネットワークエンジニアを目指していたがネットワークエンジニアとして一回も働けなかった人間”が全くキャリアを積めず自分がぐちゃぐちゃなった結果、鬱でドクターストップののち、プログラマーとして再起を目指すブログです。(やはりPCは好きなんだな

Shift-JISファイルをUTF-8に変換するRubyスクリプト書いた

いろいろとメモを取る為にポメラを使ってるんですが、Shift-JISしか対応しておらず、いろいろ書いてもいろんなところで文字化けを起こすという状況でした。

いろいろとUTF-8になって久しい今どき、文字コードで悩んでるのなんてめっちゃ少数派な気もしますが、せっかくRuby勉強しているのでスクリプトにしました! これを書く以前はメモ帳で開いて、「名前を付けて保存」にして、文字コードからUTF-8を選んで保存、ということをしていたので、だいぶ楽になった!

Shift-JISのUTF-8変換

カレントフォルダの直下すべてをそれぞれ変換

require 'fileutils'

str = ""
utf = "_utf8.txt"

Dir::glob("*\.txt").each do |filename|
  File.open(filename, "r") do |f| 
    str = File.read(f,:encoding => Encoding::Shift_JIS).encode(Encoding::UTF_8)
  end

  newfilename = File.basename(filename,".txt") + "_utf8.txt"

  File.open(newfilename,"a+") do |f|
    f.puts(str)
  end
end

matome.txtにまとめる(File.openの第一引数が変わっただけ。)

require 'fileutils'

str = ""
utf = "_utf8"

Dir::glob("*\.txt").each do |filename|
  File.open(filename, "r") do |f| 
    str = File.read(f,:encoding => Encoding::Shift_JIS).encode(Encoding::UTF_8)
  end

  File.open("matome.txt","a+") do |f|
    f.puts(str)
  end
end

しかし単純なスクリプトでも*1、チリツモで結構スクリプトの力が実感できますね!

*1:毎日の勉強メモをファイル単位で分けているという運用をしているせいなんですが