In meiner Website habe ich die Option, alle Bilder von Benutzern hochgeladen herunterladen. Das Problem ist in Bildern mit hebräischen Namen (ich brauche den ursprünglichen Namen der Datei). Ich habe versucht, Dateinamen zu dekodieren, aber das hilft nicht. Hier ist ein Code:Zip-Datei mit utf-8 Dateinamen
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);
}
}
Nach utf-8-Kodierung i hebräisch Dateinamen wie diese:. ?????? jpg Wo ist mein Fehler?
Was ist ein neuer 'ZipEntry'? Ich bin mir nicht bewusst, dass dies Teil des neuen 'System.IO.Compression'-Namespace ist. j #? – efkah
Dies ist ICSharpCode.SharpZipLib.Zip-Bibliothek –