私のウェブサイトには、ユーザーがアップロードしたすべての画像をダウンロードするオプションがあります。問題は、ヘブライ名の画像です(ファイルの元の名前が必要です)。私はファイル名をデコードしようとしましたが、これは助けにはなりません。ここでは、コードは次のようになります。utf-8ファイル名のZipファイル
using ICSharpCode.SharpZipLib.Zip;
Encoding iso = Encoding.GetEncoding("ISO-8859-1");
Encoding utf8 = Encoding.UTF8;
byte[] utfBytes = utf8.GetBytes(file.Name);
byte[] isoBytes = Encoding.Convert(utf8, iso, utfBytes);
string name = iso.GetString(isoBytes);
var entry = new ZipEntry(name + ".jpg");
zipStream.PutNextEntry(entry);
using (var reader = new System.IO.FileStream(file.Name, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
byte[] buffer = new byte[ChunkSize];
int bytesRead;
while ((bytesRead = reader.Read(buffer, 0, buffer.Length)) > 0)
{
byte[] actual = new byte[bytesRead];
Buffer.BlockCopy(buffer, 0, actual, 0, bytesRead);
zipStream.Write(actual, 0, actual.Length);
}
}
UTF-8エンコーディングした後、私はこのようなヘブライ語のファイル名を取得:?????? JPG どこに私のミスですか。?
新しいZipEntryは何ですか?これは新しい 'System.IO.Compression'名前空間の一部であることに気づいていません。 j#? – efkah
これはICSharpCode.SharpZipLib.Zipライブラリ –