Thread overview
Failed to archive JPEG (ArchiveMember): Invalid UTF-8 sequence (at index 1)
Jan 14, 2023
Ki Rill
Jan 14, 2023
Adam D Ruppe
Jan 14, 2023
Ki Rill
January 14, 2023

Please, help me solve the annoying error above. I've been refactoring and rewriting code for my archive utility called zippo and I face this error when it tries to archive a JPEG image.

I tracked it down to the following function that helps me add a new member to ZipArchive.

void zipAddArchiveMember(ref ZipArchive zip, in string file) {
    import std.conv: to;
    import std.file: readText;
    import std.string: representation;

    ArchiveMember member = new ArchiveMember();
    member.name = file;
    writefln("%s", file);
    member.expandedData(file.readText().dup().representation());
    member.compressionMethod = CompressionMethod.deflate;
    zip.addMember(member);
}

Am I missing something?

January 14, 2023

On Saturday, 14 January 2023 at 01:08:25 UTC, Ki Rill wrote:

>

a JPEG image.

member.expandedData(file.readText().dup().representation());

A jpeg image is not a text file. Read it with std.file.read() instead of readText. Then you can get rid of those useless dup.representation calls too.

January 14, 2023

On Saturday, 14 January 2023 at 01:13:33 UTC, Adam D Ruppe wrote:

>

On Saturday, 14 January 2023 at 01:08:25 UTC, Ki Rill wrote:

>

a JPEG image.

member.expandedData(file.readText().dup().representation());

A jpeg image is not a text file. Read it with std.file.read() instead of readText. Then you can get rid of those useless dup.representation calls too.

Thank you for such a quick reply! It solved my issue!