« 2009年のWRCと今後のスバル | トップページ | Windows7(ベータ)はかなりいい »

DotNetZipで日本語を扱う

C#(+.netFramework2.0)でzipを扱うとき、自分でzip関連を実装する以外にはおよそ3つの方法がある。

  1. J#ランタイムの利用
  2. SharpZip
  3. DotNetZip

3番目のDotNetZipは他と比べて簡単、ライセンスも甘いということで使い勝手はいいのだけど「ちょっと遅い?」「日本語が化ける」という問題がある。日本語化けのせいで敬遠している人も多いと思う。だがver1.6ではきちんと処理すれば日本語もちゃんと出るのでそれをメモ。

DotNetZipはver1.6を利用。

以下がzipファイル内のファイル一覧を表示するルーチン。
zipファイルの中を閲覧、展開するときのRead()に必ずPagecodeを指定することがポイント。1行目のようにEncodingで932を指定してあげればSJISで保存されている場合でもちゃんと表示される。

using (ZipFile zip = ZipFile.Read(szZipPath, System.Text.Encoding.GetEncoding(932)))
{
    //Zipファイル名を表示
    string s;
    s = string.Format("Filename : {0}", zip.Name);
    Debug.WriteLine(s);

    //zip内部のファイル数を表示
    s = string.Format("Entries : {0:#,0}", zip.Count);
    Debug.WriteLine(s);

    //ファイル名のみ表示
    ReadOnlyCollection<string> roc = zip.EntryFileNames;
    foreach (string sz in roc)
    {
        s = string.Format("zip in Filename : {0}", sz);
        Debug.WriteLine(s);
    }
}

ソースコードは置いておくので参考にしてください。

|

« 2009年のWRCと今後のスバル | トップページ | Windows7(ベータ)はかなりいい »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/2371/43636083

この記事へのトラックバック一覧です: DotNetZipで日本語を扱う:

« 2009年のWRCと今後のスバル | トップページ | Windows7(ベータ)はかなりいい »