kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

IronPythonのzipソースと日本語

IronPythonにはzipの圧縮/展開処理のソースがついています。zip.csとcrc32.csをぱっくんちょすればOK。これを拝借して自前のバックアップファイル圧縮処理にしていたのですが、Explorerフォルダでみると、日本語フォルダ・ファイル名がばけばけ。
ソースをちょっと見てみると、zipのヘッダに記録するファイル名がこうなっていました。

  Byte[] namebytes = Encoding.UTF8.GetBytes(name);

これでUTF8っぽい化け方しているので、ひょっとしてExplorerのzipフォルダはShift-JISでやっているのかな?と思ってこう変えたらビンゴ。日本語でzipフォルダが表示されます。

  Byte[] namebytes = Encoding.GetEncoding(932).GetBytes(name);

zipフォルダが発明というか、zipに日本語ファイル名を入れだしたとき、Winodws 95とか98の時代だったからShift-JISで入れるのがリーズナブルというか、仕方なかったんでしょうかね。IronPythonのソース直すなら…さて?現在のCulture見てEncoding取得して…にする?なんかうまい方法ないもんでしょうかね。