Web + Life Hack

〜True But Useless〜

【ruby】【rails】csvでおなじみのKconv触ってみた。


必要なデータはCSV形式で良いですか?



営業さんやマーケッターとやり取りするエンジニアなら一回はこの言葉を聞いたこと
あるかと思います。
ちょいちょい文字コードを変換するぐらいならやったことがあります!
(別に大したことしてない。。。)

【DB】【CSVCSVに泣く前に見直したいたった3つのこと。

http://g08m11.hateblo.jp/entry/2014/05/02/232859

今回は「kconv」を使ったのでそのやり方をメモ。

kconvって何?

日本語の文字コード変換はこれだけで事足りるという驚きのruby標準の文字コードエンコーディングを変換するためのモジュールです。
Unicode 系の変換は出来ませんが、Shift_JIS, EUC-JP, ISO-2022-JP の相互変換が可能です。

railsだとどうやって使うの?

まずrubyの使い方
newstring = Kconv.kconv(string, Kconv::JIS, Kconv::AUTO)
newstring = Kconv.tojis(string)

であったり

newstring = string.kconv(Kconv::JIS, Kconv::AUTO)
newstring = string.tojis

といった使い方。

railsの使い方

railsも使い方は変わらないです。
ただ、requireを使用します。
【前提条件】

  • gem install kconvでインストール済みまたは、Gem fileに「gem kconv」を追加し、bundle installまで実施済みであること。

【書き方】
tsv_string = File.read(tsv_file).kconv({出力したい文字コード}, {変換したい文字コード})

require 'kconv'


# 基本
csv_string = File.read(csv_file).kconv(Kconv::UTF8, Kconv::EUC)

# 「上記の基本」から出力したい文字コードをshift_jisに変更する場合
tsv_string = File.read(csv_file).kconv(Kconv::SJIS, Kconv::EUC)

# 「上記の基本」から変換したい文字コードを変更する場合
tsv_string = File.read(tsv_file).kconv(Kconv::UTF8, Kconv::UTF8)

これって初めて見る人によっては

複数文字コードを出力指定」出来るの?すげぇ!

って見えますが全然違うので注意しましょう!
僕には一瞬ですがそう見えました。。。

参考サイト
http://magazine.rubyist.net/?0009-BundledLibraries#l7