tweeeetyのぶろぐ的めも

アウトプットが少なかったダメな自分をアウトプット<br>\(^o^)/

【linux】ファイルの文字コードを変換する。vi、iconv、nkf (nkfの文字コード判定とか一括変換は便利)

はじめに

linuxでファイルの文字コード変更するときのいくつかの方法メモです。

おしながき

  1. viで変更する
  2. iconvで変更する
  3. nkfで変更する
  4. 一括で変更する

1. viで変更する

これは他の記事で詳細に書いたのでそちらに任せて手抜きしますw
例としてはこんなカンジ。viで開いた後コマンドモードで行います。

:set fileencoding=文字コード
もしくは
:set fenc=文字コード
 
例) 保存形式をeuc-jpに変える
:set fenc=euc-jp

もっと詳しく

【linux】viでの文字コードの扱い。文字コード変更したりファイルエンコードを指定して保存したり(fileencoding, fileencodings, encoding)

2. iconvで変更する

iconvコマンドで変更します。

コマンドのフォーマット

iconv -f ENCODING -t ENCODING INPUTFILE

オプション

-oを指定しない場合は、標準出力に表示して終わります。
変換して保存したいときに-oオプションで出力先を指定します

# iconv -f sjis -t utf-8 sample.pl -o sample.pl
参考

【iconv】文字コードを変換して出力する

3. nkfで変更する

nkfnetwork kanji filterの略らしいです。略を初めて知りました。
そんなこんなでnkfで変換。デフォルトでは入ってないのでyumでinstallして使いましょう。

また、nkf -g ファイル名文字コードやファイルフォーマットを判別してくれるので
ちょっとしたときに使えます

※ インストールとバージョン確認
# sudo yum install --enablerepo=base nkf
# nkf --version
Network Kanji Filter Version 2.0.8 (2007-07-20) 
Copyright (C) 1987, FUJITSU LTD. (I.Ichikawa),2000 S. Kono, COW
Copyright (C) 2002-2007 Kono, Furukawa, Naruse, mastodon

※ 文字コードの判別
# nkf -g sample.pl
EUC-JP (LF)

※ utf-8に文字コード変換してから判別してみる
# nkf -w --overwrite sample.pl
# nkf -g sample.pl
UTF-8 (LF)
オプション
  • -g : 自動判別
  • -w : UTF-8コードで出力
  • -e : EUC-JPコードで出力
  • -s : Shift-JISコードで出力
  • --overwrite : 直接上書き
参考

Linux上で文字コードを変換できるコマンドnkfのオプション一覧

4. 一括で変更する

こちらは参考サイトのまんまなので、コマンドだけ引用させて頂いて参考サイトを載せておきます

※ 拡張子がpolのすべてのファイルをutf-8に一括変換する
# find -name '*.pl' | xargs nkf --overwrite -w

※ ファイルタイプが`ファイル`のものをutf-8に一括変換する
# find . -type f -print0 | xargs -0 nkf --overwrite -w -Lu
参考

Linuxコマンドで複数ファイルの文字コードを一括変換

まとめ

nkfの一括変換はいざってとき役立ちそうなので覚えておいて損はなさそうです!