NKFで文字コードを変換する
csvのインポート・エクスポート処理でshift-gisをUTF-8に変換する必要がありました。
しかし、文字コードについてよくわかっておらず、色々教えてもらいました。
今回はその内容について書き留めておこうと思います!!
NKFとは
ものすごく古い漢字コード変換プログラムである nkf を Ruby から用いるためのライブラリだそうです。
使い方
使うには require 'nkf' して、
としてあげれば文字コードを変換してくれます。
以下は実際に自分がNKFを使った時のコードの一部です。
jobでcsvを読み込んで、その内容を保存する時に使いました。
require 'csv'
require 'nkf'
class ClientImportJob < ApplicationJob
include ApplicationHelper
queue_as :default
略
def perform(client_import)
略
temp_path = @client_import.import_file.url
error_text = ""
csv_text = File.open(temp_path).read
rows = CSV.parse(NKF.nkf('-w -x', csv_text), headers: true)
略
end
end
上のコードでは、-wと-xオプションを使いました。
それぞれ、
-wはUTF-8 を出力する(BOMなし)、
-xはX0201片仮名(いわゆる半角片仮名)をX0208の片仮名(いわゆる全角片仮名)に変換せずに
出力する、と言うオプションです。
これ以外にもたくさんのオプションがあります。以下のリンク先にオプション一覧がまとまっております。
文字コード難しい。。。!!