Frost Moon Project

Macで圧縮されたZipファイルを文字化けせずに解凍するunzip.exe(Info-Zip)パッチ - Frost Moon Project アクセスランキング

Home > Tips > Macで圧縮されたZipファイルを文字化けせずに解凍するunzip.exe(Info-Zip)パッチ

Macで圧縮されたZipファイルを文字化けせずに解凍するunzip.exe(Info-Zip)パッチ

  1. 問題
  2. ダウンロード
  3. 解決方法

問題
  1. ここに怪しげなzipファイルがあります。


  2. 7-zip32.dllで中身を覗いてみると...見事文字化けしています。
    unzip.exe(Info-Zip) Ver.6.0(unz600xn.exe)でも同様に文字化けしてしまいます。


  3. そこで、unzip.exe(Info-Zip)最新版(140324現在unzip610c08a_l_sZ.zip)をこちらからダウンロード、解凍。

  4. bzip2最新版(140324現在bzip2-1.0.6.tar.gz)をこちらからダウンロードし、
    解凍された*.cと*.hunzip610c08a_l/bzip2へコピー、
    win32/vc9/unzip.slnをMicrosoft Visual C++ 2010 Expressで開き、ビルド!!!

  5. unzipを実行すると...無事解凍出来ました!!
    ...が、濁点、半濁点が分解されて表示されています。
    どうやらこのzip、ファイル名がUTF-8-MACで格納されている様子。
    この手のファイルは扱い辛いところがあるので、濁点半濁点を合成して欲しいですね。


  6. しかも、日本語ファイル名がUTF-8(-MAC)やエスケープ文字を用いて格納されていない、
    (普通の)書庫だと文字化けしてしまいます。



ダウンロード
(150102)追記
「normaliz.dll」でこの問題は解決?

7-zip32.dll/7-zip64.dll文字化け対策版で文字化けせずに処理ができるようになりました。
そこで、日本語が文字化けせず、
かつ濁点半濁点を合成してくれる素敵なパッチを作りました。

unzip610c08a_l_jp.patch

unzip610c08a_lディレクトリにコピーして、
patch -p1 < unzip610c08a_l_jp.patch
として下さい。


ただし、このパッチは不完全なものです。
パッチする前に、以下をお読みくださいませ。
解決方法
(150102)追記
「normaliz.dll」でこの問題は解決?

7-zip32.dll/7-zip64.dll文字化け対策版で文字化けせずに処理ができるようになりました。
まず、通常の日本語ファイル名が格納されたzipが文字化けしてしまうのは、
ワイド文字列への変換で、
MultiByteToWideChar(CP_UTF8,...);


としている為みたいです。
そこで、
len = MultiByteToWideChar(CP_UTF8,MB_ERR_INVALID_CHARS,...);
として、len >0 であれば、 CP_UTF8 
そうでなければ、 CP_ACP を指定してMultiByteToWideChar()するように変更。
これで文字化け解消!!!(多分

次に、正規化の問題ですが、
「゙」(U+3099)があれば、ひとつ前の文字の文字コードに1を加え、
「゚」(U+309A)があれば、ひとつ前の文字の文字コードに2を加える。
と言う、とても頭の悪い方法を採用しました。
たとえば、「」(U+306F)「」(U+3099)とあれば、「」(U+3070)に、
」(U+306F)「」(U+309a)とあれば、「」(U+3071)となります。

つまり、このファイルの様に、
」(U+3042)「」(U+3099)と格納されている場合、
解凍されるファイル名は「」(U+3043)となってしまいます。

でも普通はそんなファイルに出会わないよねー
とか、
正規化がいまいち良く分からないなー、濁点と半濁点だけで良いかなー
と言う訳でして。
勿論、エラー処理はしていませんし、表示部の文字化けも見て見ぬふりです。
Unicode文字列を含むファイルを対象とすることも出来ません。
そのあたりをご理解して頂いた上で、参考にして頂ければと思います。


間違い等があれば、BBSやメールにてお知らせ下さい。



パッチ済みunzip.exeで解凍するとこの通り!!
これでまじぽか2期確定!!!やったぁ!


Copyright(C)Frost Moon Project


Home > Tips > Macで圧縮されたZipファイルを文字化けせずに解凍するunzip.exe(Info-Zip)パッチ