Linux 上で、zip ファイルを解凍するとファイル名が文字化けしている場合があります。これは Linux では、ファイルを圧縮する際ファイル名を UTF-8 でエンコードするのに対し、
Windowsではファイル名をShift_JIS(CP932)でエンコードするのが原因です。
ファイル名が文字化けしているだけでファイルの中身に変更はありませんが、ディレクトリに文字化けしたファイルがあるとファイルの整理が大変なので Linux 用の UTF-8 のファイル名に変更します。
ファイル名の変換は、convmv コマンドで行います。convmv コマンドは以下のコマンドでインストールします。
CentOS の場合 $ sudo yum -y install convmv Ubuntu の場合 $ sudo apt-get -y install convmv
Shift_JIS から UTF-8 へ変換する。 $ convmv -f cp932 -t utf8 *.txt --notest mv "./�t�@�C���P.txt">"./ファイル1.txt" mv "./�t�@�C���Q.txt">"./ファイル2.txt" Ready!
UTF-8 から Shift_JIS へ変換する。
$ convmv -f utf8 -t cp932 *.txt --notest mv "./ファイル1.txt">.."./�t�@�C���P.txt" mv "./ファイル2.txt">.."./�t�@�C���Q.txt" Ready! // コマンドは拡張子を txt としていますが、変換したいファイルが Word(ワード) やExcel(エクセル),PDFであれば拡張子を変えて実行して下さい。 $ convmv -f utf8 -t cp932 *.docx --notest $ convmv -f utf8 -t cp932 *.doc --notest $ convmv -f utf8 -t cp932 *.xlsx --notest $ convmv -f utf8 -t cp932 *.xls --notest $ convmv -f utf8 -t cp932 *.pdf --notest など
もし Linux で Shift_JIS の文字列確認したい場合は、以下の手順で行います。
ls コマンドで文字化けを確認
$ ls �t�@�C���P.txt �t�@�C���Q.txt
日本語で使用できる文字コードを確認。
$ locale -a | grep ja ja_JP.utf8
Shift_JIS を使用できるようにロケールデータベースに登録
$ sudo localedef -f SHIFT_JIS -i ja_JP ja_JP.SJIS // ワーニングメッセージが出力されるが無視します。 文字マップ `SHIFT_JIS' は ASCII 互換ではありません。ロケールが ISO C 準拠ではありません
日本語で使用できる文字コードを確認。
$ locale -a | grep ja : ja_JP.sjis ja_JP.utf8
LALG設定をShift_JISに変更する。(ターミナルの文字コード設定も変更します。gnome-terminal の場合、「端末」->「文字コードの設定」)
$ export LANG=ja_JP.sjis 最近は、localectl コマンドを使用したい所だが SJIS 設定は、localectl コマンドでは行えないので、export コマンドで環境変数を変更する。 $ sudo localectl set-locale LANG=ja_JP.sjis
ls コマンドで文字化けが直った事を確認。
$ ls ファイル1.txt ファイル2.txt