@port139 Blog

基本的にはデジタル・フォレンジックの技術について取り扱っていますが、記載内容には高確率で誤りが含まれる可能性があります。

圧縮ファイルのファイル名文字コード

日本語版Windows環境下で LHZ・ZIP 形式の圧縮ファイルを作成した場合、圧縮ツールは一般的にファイル名を Shift_JIS(CodePage 932)で保存を行います。日本語環境では一般的に(日本産の)展開ツールもファイル名の取り扱いを Shift_JIS を前提で考えているため、日本語版 Windows 同士などであれば、圧縮ファイル展開時に Shift_JIS のファイル名が文字化けを起こす可能性はほとんどないと思われます。(韓国語版 Windows 環境下で LZH で圧縮されたファイルだと、ファイル名が CP 949 だったりするのでややこしくなりますが)
フォレンジック調査において、未使用領域に対して、圧縮ファイルに含まれていたファイル名などを検索する場合には、CP 932 を利用してキーワード登録して検索することでファイル名部分がヒットすることになります。

逆に、英語版 Windows 環境で、日本語を含むファイル名を WinZIP を使って圧縮を行なった場合、ファイル名には UNICODEUTF-8) が使われます。この為、英語版 Windows 環境と WinZIP で作成された ZIP ファイルを、日本語環境で国産の展開ツールで伸張した場合、文字コードとして CP 932 が前提となっているため展開されたファイル名が文字化けすることになります。
英語版 Windows 上で圧縮した ZIP ファイルを、日本語版 Windows 環境で文字化けせずに展開するには、UNICODEUTF-8) に対応した展開ツールが必要になりますが、例えば 7-Zip であれば文字化けせずにファイルが展開されます。

英語版 Windows 上で WinZIP を使った日本語ファイル名の圧縮・伸張を行なっても文字化けが再現しないのは、ファイル名が全て UNICODEUTF-8) で扱われ、入出力共に一致しているためですが、時々海外製品のメーカーサポートとやり取りしていると、彼らの環境では“文字化けが再現しない!”とか言われるのはこの辺りが原因だったりします。
英語版などの環境で作成された圧縮ファイルに対して、(未使用領域上で)日本語ファイル名のキーワード検索を行なうことが考えられる場合には、CP 932 だけでなく、UTF-8 でも文字列を検索する必要があるかもしれません。

社内でこの話題について話していたところ、斜め後ろの席な人から、英語版 Windows 上で、Regional and Language Options の Advanced タブにある、Language for non-Unicode program において、「Japanese」を選択している場合には Shift_JIS のファイル名とかでも文字化けせずに展開が可能と教えてもらいました。実際に英語版 Windows XP でテストしてみたところ、日本語ファイル名も特に問題なく展開が可能なようでした。Language for non-Unicode program の設定がデフォルトの English などの設定では、エクスプローラから ZIP を展開させた場合にも文字化けしていましたが、「Japanese」を設定したところ OK でしたので、これはこれで便利ですね。
日本語版 Windows XP の場合には、地域と言語のオプションが該当箇所になりますが、マイクロソフト社の Web だと以下の説明ですね。
Windows XP Professional の多言語機能(http://technet.microsoft.com/ja-jp/library/cc835604.aspx

Unicode 対応でないプログラムの言語 従来はシステム ロケールと呼ばれていたもので、Unicode ではないプログラムを実行する規定のコード ページとフォントを指定します。