日本語環境こんにちは。今回のテーマは『Linuxで文字コードを変換する方法』です。WindowsやMacから送られてきた添付ファイルが文字化けして読めないということはよくあります。場合は文字コードが異なることで起こります。現在のLinuxではUTF-8が主流ですが、EUC-JPを使っているシステムからファイルをコピーしてくると文字化けすることもあります。今回はそんな時も慌てず対応するためのツールを紹介します。【関連記事】Linuxで読み込んだUSBメモリが文字化けした時の対処方法Windowsから送られてきた添付ファイルが文字化けでは早速Windowsから送られてきた添付ファイル”三四郎.txt”を開いてみましょう。夏目漱石の『三四郎』の冒頭ですが完全に文字化けしてますね。これを読めるようにしていきましょう。文字コードを調べるfileコマンドを使うまずこのファイルはどの文字コードで書かれているのでしょうか?以下のコマンドで調べられます。terminatorsつまりShift-JISということですね。Windwosから送付されたということなので当然なのですが。nkfを使う方法もあるnkfについては次の項で紹介しますが、文字コードを調べるにも便利なツールです。以下のように使います。(LF)iconvを使って文字コードを変換するまずはiconvを使って変換していきましょう。Linuxユーザーの間ではとても有名なツールですね。基本的な使い方は以下の通りです。<ファイル名>よく使われるエンコーディングには以下があります。SHIFT_JISCP932UTF-8EUC-JP全て見たい場合には-lオプションで見ることが出来ます。オプションとしては以下が用意されています。プログラムのバージョンを表示する変換結果を別ファイルに出力するiconvは変換結果を出力するコマンドですので、ファイルに出力する必要があります。ファイルAの文字コードを変換してファイルBを作る場合は以下のコマンドを実行します。ファイルBまたは具体的な使い方さて、Windowsから送信された”三四郎.txt”をUTF-8のconvfile.txtに変換します。convfile.txtnkfを使って文字コードを変換するもうひとつの有名なツールがnkfです。nkfではメジャーなディストロでは大抵パッケージとして用意していると思います。nkfの基本的なコマンドは以下の通りです。<ファイル名>このオプションで変換後の文字コードを決めます。細かいオプションはHelpを見ていただくとして文字コード変換に取り敢えず必要なオプションは以下の通りです。file.txtとなります。変換結果を別ファイルに出力するiconvと同じくnkfも結果を標準出力に出力するのでファイルに書き出すには以下のようなコマンドとなります。<ファイルB>具体的な使い方では先ほどと同じくWindowsから送信された”三四郎.txt”をnkfでUTF-8に変換してみます。convfile.txtでは変換されたconvfile.txtを見てみます。して目がさめると女はいつのまにか、隣のじいさんと話を始めている。このじいさんはたしかに前の前の駅から乗ったいなか者である。発車まぎわに頓狂な声を出して駆け込んで来て、いきなり肌をぬいだと思ったら背中にお灸のあとがいっぱいあったので、三四郎の記憶に残っている。じいさんが汗をふいて、肌を入れて、女の隣に腰をかけたまでよく注意して見ていたくらいである。Vimの文字コード変換を使うvimでも文字コードを扱うことが出来ます。簡単に紹介しておきます。fenc=[エンコーディング]以上の動作を組み合わせることでファイルの文字コードを変換することが出来ます。エンコーディングには主に以下のものがあります。cp932shift_jiseuc-jputf8最後に最近Windowsから送られてきたメールの添付ファイルが文字化けしていたり、自分がMacで以前に作成したテキストファイルが文字化けしていたため備忘録として記事を書きました。文字コードについては歴史的な背景もあり非常に複雑です。Linux関連はunicodeで一本化していくでしょうが、まだまだこの問題が収束するには時間がかかりそうです。コメントをキャンセルメールアドレスが公開されることはありません。10をインストールするタイル型ウィンドウマネージャXmonadを使う(カスタム編)→もっと見るクロのプロフィール映画と読書愛するプログラマー。Androidな人だったけど気がついたらサーバーサイドへ。Dataを主宰しています。