Zip/RARを解凍して使用したいと考えています。
現在SharpCompressというライブラリを見つけ、解凍したのですが日本語パス名が文字化けしてしまいます。
この文字化けを回避したいのですが方法が判りません。
このライブラリでなく、別のものでも構いません。
判る方居ましたらご教示お願いします。
やりたいこと
・Zip/RARを解凍したい
・直接ファイル展開ではなくStream、あるいはByteでメモリ上に欲しい
・出来る限り多くのアーカイブに対応している方が良い(必須ではない)
調べたこと
・System.Text.Encodingを使用して文字コード変換をしてみた(ASCII、UNICODE、Shift_JIS)
→一通り変換を試したがどれも正常に変換されず。
・文字コードをバイト配列で調査してみた。
→自分が眺めた限りフォーマットがわからなかった。
・日本語のアーカイブはShift_JISで格納するらしい(Windows)
恐らくアーカイブ内部のバイトデータを何らかの形でstringにしてしまっているのが問題ではないかという推測しています。
以上、よろしくお願いします。
取得時のコードを書きました。
C#
1private void GetName() 2{ 3 using (var readStream = new FileStream("読み込むアーカイブ名.zip", FileMode.Open, FileAccess.Read)) 4 using (var stream = Stream.Synchronized(readStream)) 5 { 6 using (var r = ArchiveFactory.Open(stream)) 7 { 8 foreach(var entry in r.Entries) 9 { 10 string name = entry.Key; //文字化けするコード 11 string name2 = convert(entry.Key); //文字化け対策コード 12 } 13 } 14 } 15} 16private static string convert(string text) 17{ 18 var source = Encoding.ASCII; //暫定的に対象をASCIIに 19 var destination = Encoding.GetEncoding("Shift_JIS"); 20 21 var bytes = source.GetBytes(text); 22 var sjisBytes = Encoding.Convert(source, destination, bytes); 23 return destination.GetString(sjisBytes); 24}
回答1件
あなたの回答
tips
プレビュー