Windowsで作ったテキストファイルをUbuntuで読み込む

Windows(DOS)で作ったテキストファイルをUbuntuにコピーして、catコマンドで表示すると、文字化けしてしまう。文字コードの変換と改行コードの変換が必要だ。Windowsの文字コードは一般的にはShift-JISだが、①(丸の中に1)のような機種依存文字を扱えるようにするため、文字コードはcp932を指定する。Ubuntuの文字コードはutf-8となる。

iconvで文字コードを変換した後、パイプでfromdosコマンドへ渡して、出力ファイルへリダイレクトすれば良い。

$ iconv -f cp932 dosfile.txt | fromdos > dosfile.txt.utf8

iconv

文字コードを変換する

$ iconv -f SHIFT-JIS -t UTF-8 dosfile.txt
$ iconv -f encoding [-t encoding] [inputfile]...
-f は変換しようとしているファイルのエンコーディングを指定する。
-t はlocaleに指定されたエンコーディングとなるので省略可能できる。
-o outfile とすると出力ファイル(outfile)の名前を指定できる。
-l  変換できるエンコード一覧が出力される。

fromdos

DOSフォーマットからUNIXフォーマットに変換する。CR,LF → LF
DOSフォーマットの改行はキャリッジリターンとラインフィードのペアになっているが、UNIXフォーマットはラインフィードだけになる。

$ fromdos dosfile.txt
$ fromdos -b dosfile.txt
-b は変換されるファイルのバックアップを作る。

todos

UNIXフォーマットからDOSフォーマットに変換する。LF → CR,LF

$ todos unixfile.txt

fromdos, todosはUbuntu 10.04 LTSをインストールした状態ではコマンドが使えなかったのでインストールした。

$ sudo apt-get install tofrodos