こんにちは。チェシャ男です。(-皿-)
当ブログでも紹介している Compress-Archive コマンドレット。
Windows 7 端末の PowerShell をバージョン 5.0にアップデートしたので「使ってみよう!」と何気なく実行したとき事件が起きました!!
なんと圧縮したZIPファイルが文字化けしてしまったのです。
ざっくり状況説明
事件発生時と同じような環境を用意します。
現在のフォルダ・ファイルの状況が、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
PS F:\work> Get-ChildItem -Recurse Directory: F:\work Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2017/01/17 10:35 新しいフォルダー Directory: F:\work\新しいフォルダー Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2017/01/17 10:35 0 新しいテキスト ドキュメント.txt |
であったとします。
つまり、
F:\Work
└─新しいフォルダー
└─新しいテキスト ドキュメント.txt
こういう状況ですね。
ディレクトリの中には日本語で名前を付けられたフォルダとファイルが存在しています。
- フォルダ:新しいフォルダー
- ファイル:新しいテキスト ドキュメント.txt
これらのファイルを ZIP 圧縮してみます。
いざ、Compress-Archive を実行!
早速、Compress-Archive コマンドレットでを使って ZIP 圧縮ファイルを作成してみると...
1 2 3 4 5 6 7 8 9 10 11 12 13 |
PS F:\work> #圧縮処理 PS F:\work> Compress-Archive -Path .\新しいフォルダー -DestinationPath .\Hoge.zip PS F:\work> #ファイルを確認 PS F:\work> Get-ChildItem Directory: F:\work Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2017/01/17 10:35 新しいフォルダー -a---- 2017/01/17 15:34 236 Hoge.zip |
と、このように問題ないように見えます。
しかしエクスプローラで圧縮ファイルの中身を見てみると、

なんと壮大に文字化けしているではありませんか。
これはどうしたものか。。。
とりあえず解凍してみる
ひとまず、Expand-Archive コマンドレットで解凍してみました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
PS F:\work> Get-ChildItem Directory: F:\work Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2017/01/17 10:35 新しいフォルダー -a---- 2017/01/17 15:34 236 Hoge.zip PS F:\work> #解凍処理 PS F:\work> Expand-Archive -Path .\Hoge.zip PS F:\work> PS F:\work> Get-ChildItem -Path .\Hoge -Recurse Directory: F:\work\Hoge Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2017/01/17 16:07 新しいフォルダー Directory: F:\work\Hoge\新しいフォルダー Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2017/01/17 10:35 0 新しいテキスト ドキュメント.txt |
上のように解凍前の
- フォルダ:新しいフォルダー
- ファイル:新しいテキスト ドキュメント.txt
は復元されているらしい。
一応ファイルのハッシュ値を確認してみると
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
PS F:\work> #圧縮前のファイルハッシュ PS F:\work> Get-FileHash '.\新しいフォルダー\新しいテキスト ドキュメント.txt' Algorithm Hash Path --------- ---- ---- SHA256 E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855 F:\work\新しいフォルダー\新しいテキスト... PS F:\work> PS F:\work> #解凍後のファイルハッシュ PS F:\work> Get-FileHash '.\Hoge\新しいフォルダー\新しいテキスト ドキュメント.txt' Algorithm Hash Path --------- ---- ---- SHA256 E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855 F:\work\Hoge\新しいフォルダー\新しいテ... |
解凍してできたファイルと圧縮元のファイルは一致している。
ということは単なる表示上のバグなのか...
ちなみに同じことを Windows 8.1 でやってみると問題なく圧縮・解凍できた。Windows 7 のバグのようだが果たして解決はできるのでしょうか。。。
※文字化け問題解決しました!解決方法はこちらをご覧ください。