サンプル
# encoding: utf-8 class File def self.insert_bom(input_filename, output_filename) src = File.read(input_filename) File.open(output_filename, "w:UTF-8") do |f| src = ' ' + src src.setbyte(0, 0xEF) src.setbyte(1, 0xBB) src.setbyte(2, 0xBF) f.print src end end end file = $*[0] exit unless File.exists? file File.insert_bom(file, "#{File.basename(file, '.csv')}_bom.csv")
処理対象ファイル
タイトル1,タイトル2,タイトル3 行1_1,行1_2,行1_3 行2_1,行2_2,行2_3
実行
$ ruby bom_csv.rb unbom_csv.csv $ ls unbom_csv* unbom_csv.csv unbom_csv_bom.csv