Windowsで作成した日本語を含むファイルをLinuxで解凍する場合の対応
シナリオ
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
Author And Source
この問題について(Windowsで作成した日本語を含むファイルをLinuxで解凍する場合の対応), 我々は、より多くの情報をここで見つけました https://qiita.com/mon_tu/items/794d0703f05ba7aec8db著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .