diff --git a/src/ICSharpCode.SharpZipLib/Tar/TarHeader.cs b/src/ICSharpCode.SharpZipLib/Tar/TarHeader.cs index e29507427..b7a42d53f 100644 --- a/src/ICSharpCode.SharpZipLib/Tar/TarHeader.cs +++ b/src/ICSharpCode.SharpZipLib/Tar/TarHeader.cs @@ -870,9 +870,11 @@ public static int GetNameBytes(string name, int nameOffset, byte[] buffer, int b int i; - for (i = 0; i < length && nameOffset + i < name.Length; ++i) + byte[] nameBytes = Encoding.UTF8.GetBytes(name); + + for (i = 0; i < length && nameOffset + i < nameBytes.Length; ++i) { - buffer[bufferOffset + i] = (byte)name[nameOffset + i]; + buffer[bufferOffset + i] = nameBytes[nameOffset + i]; } for (; i < length; ++i) diff --git a/src/ICSharpCode.SharpZipLib/Tar/TarOutputStream.cs b/src/ICSharpCode.SharpZipLib/Tar/TarOutputStream.cs index 09202caa7..1e3985c07 100644 --- a/src/ICSharpCode.SharpZipLib/Tar/TarOutputStream.cs +++ b/src/ICSharpCode.SharpZipLib/Tar/TarOutputStream.cs @@ -262,7 +262,7 @@ public void PutNextEntry(TarEntry entry) while (nameCharIndex < entry.TarHeader.Name.Length + 1 /* we've allocated one for the null char, now we must make sure it gets written out */) { Array.Clear(blockBuffer, 0, blockBuffer.Length); - TarHeader.GetAsciiBytes(entry.TarHeader.Name, nameCharIndex, this.blockBuffer, 0, TarBuffer.BlockSize); // This func handles OK the extra char out of string length + TarHeader.GetNameBytes(entry.TarHeader.Name, nameCharIndex, this.blockBuffer, 0, TarBuffer.BlockSize); // This func handles OK the extra char out of string length nameCharIndex += TarBuffer.BlockSize; buffer.WriteBlock(blockBuffer); }