Shift-JISファイルをUTF-8に変換するRubyスクリプト書いた
いろいろとメモを取る為にポメラを使ってるんですが、Shift-JISしか対応しておらず、いろいろ書いてもいろんなところで文字化けを起こすという状況でした。
#progate すすめ中。HTML&CSSはマークダウンを書きたい(ポメラで)という願望から知ってるからサクサクなんだが…
— a3t3mbk (@a3t3mbk) 2018年8月7日
これなー
即起動できる電子メモとしてポメラ使ってるんですけど、文字コードがナー
w3c標準がしふとじすにならないかなー
(あの支離滅裂の人の画像は省略) pic.twitter.com/dZYF48St1i
いろいろと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:毎日の勉強メモをファイル単位で分けているという運用をしているせいなんですが