@@ -57,10 +57,12 @@ - (instancetype)initWithStream: (OFStream *)stream entry: (OFTarArchiveEntry *)entry; @end @implementation OFTarArchive: OFObject +@synthesize encoding = _encoding; + + (instancetype)archiveWithStream: (OF_KINDOF(OFStream *))stream mode: (OFString *)mode { return [[[self alloc] initWithStream: stream mode: mode] autorelease]; @@ -115,10 +117,12 @@ @throw [OFInvalidFormatException exception]; [stream seekToOffset: -1024 whence: SEEK_END]; } + + _encoding = OF_STRING_ENCODING_UTF_8; } @catch (id e) { [self release]; @throw e; } @@ -193,11 +197,12 @@ return nil; } entry = [[[OFTarArchiveEntry alloc] - of_initWithHeader: buffer.c] autorelease]; + of_initWithHeader: buffer.c + encoding: _encoding] autorelease]; _lastReturnedStream = [[OFTarArchive_FileReadStream alloc] initWithStream: _stream entry: entry]; @@ -228,11 +233,12 @@ [_lastReturnedStream close]; [_lastReturnedStream release]; _lastReturnedStream = nil; - [entry of_writeToStream: _stream]; + [entry of_writeToStream: _stream + encoding: _encoding]; _lastReturnedStream = [[OFTarArchive_FileWriteStream alloc] initWithStream: _stream entry: entry];