QR Send

スマホとPCのChrome間で、URLやテキストをQRコード1回のペアリングで送り合える自作Chrome拡張。アカウント不要・無料。

使ってみる →

CSVを作成する時にbom付きで保存して文字化けを解決!

Selenium・自動化

csvファイルを作成すると文字化けする

スクレイピングなんかをしているとデータをCSVに入れたくなりますよね。
でもそこにマルチバイト文字が混ざっているとエクセルで開いた時に文字化けしてしまったという経験があるのではないでしょうか。

 

bom付きで保存して解決

rubyに標準で入っているcsvライブラリのgenerateを使ってbom付きのCSVを作ってみましょう。

require 'csv'

# bomを作成
bom = %w(EF BB BF).map { |e| e.hex.chr }.join

# generateで引数にbomを渡してあげる
csv_file = CSV.generate(bom) do |csv|
  csv << ["名前", "メールアドレス", "年齢"]
end

これでcsv_fileというCSVクラスのオブジェクトができました。

あとはこれをファイルで保存するだけです。

File.open("result.csv","w") do |file|
  file.write(csv_file)
end

これでbom付きのresult.csvファイルがヘッダー付きで作成されました。

データを追加する時はこうですね。”w”を”a”にするだけですね。

CSV.open("result.csv","a") do |file|
  file << ["かつや", "katsuya@csv.com", "36歳"]
end

 

これでcsvファイルをエクセルで開いても文字化けしません。

簡単ですね。

コメント

タイトルとURLをコピーしました