Macで圧縮されたZipファイルを文字化けせずに解凍するunzip.exe(Info-Zip)パッチ - Frost Moon Project
Home >
Tips >
Macで圧縮されたZipファイルを文字化けせずに解凍するunzip.exe(Info-Zip)パッチ
Macで圧縮されたZipファイルを文字化けせずに解凍するunzip.exe(Info-Zip)パッチ
-
- 問題
- ダウンロード
- 解決方法
- 問題
-
- ここに怪しげなzipファイルがあります。
- 7-zip32.dllで中身を覗いてみると...見事文字化けしています。
unzip.exe(Info-Zip) Ver.6.0(unz600xn.exe)でも同様に文字化けしてしまいます。
- そこで、unzip.exe(Info-Zip)最新版(140324現在unzip610c08a_l_sZ.zip)をこちらからダウンロード、解凍。
- bzip2最新版(140324現在bzip2-1.0.6.tar.gz)をこちらからダウンロードし、
解凍された*.cと*.hをunzip610c08a_l/bzip2へコピー、
win32/vc9/unzip.slnをMicrosoft Visual C++ 2010 Expressで開き、ビルド!!!
- unzipを実行すると...無事解凍出来ました!!
...が、濁点、半濁点が分解されて表示されています。
どうやらこのzip、ファイル名がUTF-8-MACで格納されている様子。
この手のファイルは扱い辛いところがあるので、濁点半濁点を合成して欲しいですね。
- しかも、日本語ファイル名が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)パッチ