はじめに
linuxでファイルの文字コード変更するときのいくつかの方法メモです。
おしながき
- viで変更する
- iconvで変更する
- nkfで変更する
- 一括で変更する
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
参考
3. nkfで変更する
nkfはnetwork 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)
オプション
参考
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
参考
まとめ
nkfの一括変換はいざってとき役立ちそうなので覚えておいて損はなさそうです!