ネット上などで配布されているzipファイルを解凍すると、文字化けしてしまうことがあります。ほかにも仕事でやりとりしたファイルが文字化けしてしまい、困ってしまう場合もあるようです。さらに文字化け後のファイル名が長すぎるものになってしまった場合、削除できなくなってしまったこともありました。今回はそんな困った文字化けの原因と、解決方法をご紹介したいと思います。
1. zipが文字化けする原因
1.1 OSにより文字のエンコードが異なるため
文字化けが起きる理由は、OSにより圧縮時に使用される文字のエンコードが異なるためです。
ファイルの圧縮を行う際、Windowsは「Shift-JIS」を使用します。それに対して、Mac OS XでやUNIX系OS(Linuxなど)では、UTF-8を使用しています。そのためMacで作成した圧縮ファイルをWindowsで解凍したり、またその逆の場合、ファイル名が文字化けを起こしてしまうのです。
2. 文字化けを回避する解凍&圧縮方法
2.1 Windows(Shift_JIS)でUTF-8を解凍する場合
Windows標準の解凍機能にパッチをあてて使用することで、対応可能です。
Windows7までのOSを使用している場合は、文字化けに対応するための修正プログラムが公式で配布されています。Windows8以降のOSについては、標準で対応しています。
【Microsoft - Windows7またはWindowsServer2008 R2で.zipファイルの解凍後にファイル名が破損しています。】
https://support.microsoft.com/ja-jp/kb/2704299
2.2 Windows(Shift_JIS)でUTF-8に圧縮する場合
zipファイルを渡したい相手がMac OS Xの場合、標準の解凍ソフトでShift-JISの解凍に対応しているので心配はありません。しかしiPadを使用していたり、Linuxで対応できるコマンドで解凍しなかったりすると、文字化けが起こる可能性があります。
そこでUTF-8で圧縮できるソフトのおすすめは、7-zipです。多くの圧縮形式に対応しているフリーの解凍ソフトとしても有能で、圧縮したファイルを分割する機能もあります。ファイル分割機能は、大きすぎてメールに添付できないファイルの分割送信時にとても便利です。
【圧縮・解凍ソフト 7-zip】
https://sevenzip.osdn.jp/
7-zipでは、次の手順で操作するとUTF-8で圧縮することができます。
・まず対象ファイルを右クリックし「圧縮」を選択して圧縮メニューを表示します。
・圧縮メニューが開いたら、図のように「パラメータ」の項目に「cu=on」と入力してOKボタンを押します。
公式のユーザーズガイドによると、「cu」パラメータは「7-Zip uses UTF-8 for file names that contain non-ASCII symbols.」と説明されています。つまり、「ASCII文字以外が含まれている場合、UTF-8を使いますよ」という意味のパラメータであり、これを「on」つまり有効にすることでUTF-8で圧縮されるというわけです。
【7-zip - compression Method】
https://sevenzip.osdn.jp/chm/cmdline/switches/method.htm
2.3 Mac OS X(UTF-8)でShift-JISを解凍する場合
Macは標準の解凍ソフトで、Shift-JISの解凍に対応しています。ただしiPadなど一部の機種では文字化けが起こってしまいます。文字化けに困った場合は、文字コードの自動認識に対応しているアプリを使用することで回避することができます。
【PocketFiler - Multithread Filer】
http://itunes.apple.com/jp/app/pocketfiler/id478746971?mt=8
2.4 Mac OS X(UTF-8)でShift-JISに圧縮する場合
Macには、Windows用のShift-JISで圧縮する専用ソフトがあります。それが「MacZip4Win」です。
【MacZip4Win】
http://ynomura.com/home/?page_id=116
使い方は、「MacZip4Win」のアイコンに圧縮したいファイルをドラッグ&ドロップするだけです。
2.5 Linux(UTF-8)でShift-JISを解凍する場合
Linuxの「unzip」コマンドでShift-JISのzipファイルに文字化けが起こる場合、「-Ocp932」というオプションをつけることで文字化けを起こさず解凍することができます。
unzip -Ocp932 [解凍したいファイル名].zip
2.6 Linux(UTF-8)でShift-JISに圧縮する場合
LinuxでWindowsでも文字化けしないファイルを作成したい場合、まず「convmv」コマンドを使用して圧縮したいファイルの文字コードをShift-JISに変換します。
$ convmv -r -f --notest utf8 -t sjis [圧縮したいファイル名]
$ zip -r [圧縮後ファイル名].zip [圧縮したいファイル名]
3. 相手のPC環境に配慮した圧縮ファイル作りを
こちらの開発機はLinuxだけどファイルを受け取る顧客がWindows環境だったりする場合、少しの配慮がとても親切になる場合があります。相手に自分と同じPCスキルを期待して「文字化けしたらググって対処するだろう」と考えるのではなく、ちょっとひと手間かけて差し上げてみると、喜ばれるかもしれません。
当サイトプロエンジニアのコンサルタントが厳選したおすすめのフリーランス案件特集はこちら
特集ページから案件への応募も可能です!
実際にフリーランスエンジニアとして活躍されている方のインタビューはこちら