NKFで文字コードを変換する

csvのインポート・エクスポート処理でshift-gisUTF-8に変換する必要がありました。

しかし、文字コードについてよくわかっておらず、色々教えてもらいました。

今回はその内容について書き留めておこうと思います!!

 

 

NKFとは

ものすごく古い漢字コード変換プログラムである nkfRuby から用いるためのライブラリだそうです。

 

使い方

 使うには require 'nkf' して、

NKF.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の片仮名(いわゆる全角片仮名)に変換せずに
出力する、と言うオプションです。

これ以外にもたくさんのオプションがあります。以下のリンク先にオプション一覧がまとまっております。

docs.ruby-lang.org

 

 

文字コード難しい。。。!!