コマンドラインからShift_JIS > UTF-8に変換する
satkakuです。
歴史を経て様々な人々によっていじられたプロジェクトでは、基本的な文字コードはUTF-8なのに、特に意味も無く一部だけShift_JISになっていることなどがあります。ありました。
自分は主にMacで開発しており、エディタは大体Sublime Text 2を使っているのですが、Sublime Text 2はデフォルトではShift_JISに対応していないため、悲劇が生まれてしまいます。
ちなみに、Sublime Text 2でもShift_JISに対応させるプラグインはあります。
参考
ありますが、特に意味も無いのであれば、せっかくなのでUTF-8に揃えておきたいところです。
そこで今日はコマンドラインから、Shift_JISで書かれたテキストファイルをUTF-8に変換する方法を試します。
とりあえずShift_JISでテキストファイルを作っておきます。
残念!
それでは変換します。文字コード変換コマンドnkfを使いたいのですが、Macにはデフォルトでは入っていないので、homebrewでインストールします。
% brew install nkf
% nkf --help Usage: nkf -[flags] [--] [in file] .. [out file for -O flag] j/s/e/w Specify output encoding ISO-2022-JP, Shift_JIS, EUC-JP UTF options is -w[8[0],{16,32}[{B,L}[0]]] J/S/E/W Specify input encoding ISO-2022-JP, Shift_JIS, EUC-JP UTF option is -W[8,[16,32][B,L]] m[BQSN0] MIME decode [B:base64,Q:quoted,S:strict,N:nonstrict,0:no decode] M[BQ] MIME encode [B:base64 Q:quoted] f/F Folding: -f60 or -f or -f60-10 (fold margin 10) F preserve nl Z[0-4] Default/0: Convert JISX0208 Alphabet to ASCII 1: Kankaku to one space 2: to two spaces 3: HTML Entity 4: JISX0208 Katakana to JISX0201 Katakana X,x Convert Halfwidth Katakana to Fullwidth or preserve it O Output to File (DEFAULT 'nkf.out') L[uwm] Line mode u:LF w:CRLF m:CR (DEFAULT noconversion) --ic=Specify the input encoding --oc= Specify the output encoding --hiragana --katakana Hiragana/Katakana Conversion --katakana-hiragana Converts each other --{cap, url}-input Convert hex after ':' or '%' --numchar-input Convert Unicode Character Reference --fb-{skip, html, xml, perl, java, subchar} Specify unassigned character's replacement --in-place[=SUF] Overwrite original files --overwrite[=SUF] Preserve timestamp of original files -g --guess Guess the input code -v --version Print the version --help/-V Print this help / configuration Network Kanji Filter Version 2.1.2 (2011-09-08) Copyright (C) 1987, FUJITSU LTD. (I.Ichikawa). Copyright (C) 1996-2011, The nkf Project.
今回初めて知りましたが、nkfはNetwork Kanji Filterの略だったんですね。
かっこいい!
それはさておき、早速-gオプションをつけて、先ほどのファイルを見てみます。
% nkf -g sjis.txt Shift_JIS
Shift_JISです。ですよね。分かってます。
さくっと変換しちゃいます。
% nkf -w sjis.txt > utf8.txt
めでたしめでたし。