LoginSignup
3
2

More than 5 years have passed since last update.

Windowsで作成した日本語を含むファイルをLinuxで解凍する場合の対応

Posted at

シナリオ

Windows上(cp932)でファイル名「ラインハルトの旗艦.txt」を「text.zip」という名前で圧縮し、Linux(utf8)上にて展開する。

unzipで解凍

オプションなしでunzipを実行するとファイル名が文字化けする。

$ unzip text.zip
Archive:  text.zip
 extracting: text/ГЙГCГУГnГЛГgВtК°Кq.txt

-I、-Oオプションでunzipを実行するとファイル名がutf8に変換される

$ unzip -I utf8 -O cp932 text.zip
Archive:  text.zip
 extracting: text/ラインハルトの旗艦.txt

オプションの意味は以下。unzip --help(UnZip 6.00 of 20 April 2009)より。

  -O CHARSET  specify a character encoding for DOS, Windows and OS/2 archives
  -I CHARSET  specify a character encoding for UNIX and other archives

ファイルの文字コード変換

上記の方法では、ファイルの中身はUTF8に変換されない。

$ cat text/ラインハルトの旗艦.txt
u
 q
  g

iconvにてファイルの内部をutf8に変換する。

$ iconv -f cp932 -t UTF-8 ラインハルトの旗艦.txt
ブリュンヒルト

上記では標準出力となるが、-oオプションでファイルへ上書き保存もできる。

$ iconv -f cp932 -t UTF-8 ラインハルトの旗艦.txt -o ラインハルトの旗艦.txt
$ cat ラインハルトの旗艦.txt
ブリュンヒルト

改行コードの変換

さらに改行コードがCRLFの場合はLFに変更する必要がある。

$ file ラインハルトの旗艦.txt
ラインハルトの旗艦.txt: UTF-8 Unicode text, with CRLF line terminators

いろいろ方法があるが以下ではsedで変換する方法。

$ sed -i -e 's/\r//g' ラインハルトの旗艦.txt
$ file ラインハルトの旗艦.txt
ラインハルトの旗艦.txt: UTF-8 Unicode text
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2