Zip ファイルを展開したらファイル名、ディレクトリ名が文字化け

LINEで送る
Pocket

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
LINEで送る
Pocket

  • このエントリーをはてなブックマークに追加

コメントを残す

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください