Eliminate use of IBM437 encoding in EPPlus.
IBM437 is the standard character encoding used by MS-DOS, and is the
de-facto "default" encoding for filenames in ZIP files. It is ASCII
compatible for all 7-bit ASCII characters.
Unfortunately, .NET Core does not support IBM437 by default; it
requires an additional NuGet package and a static method call to
register the obsolete encodings. We do not do this consistently, nor
does EPPlus.
Fortunately, we are only parsing OOXML packages (which are specialized
ZIP files), not general-purpose ZIP files. The OOXML standard
(ECMA-376) part 2 section 7.3.4 states that every non-ASCII character
in an OOXML part name (ZIP filename) must be percent encoded.
Therefore, file names in OOXML packages (ZIP files) only contain ASCII
characters and support for IBM437 is not required.
Change-Id: Ic652ded98476aaa662fefb3ec9ed4b73ec195315
diff --git a/EPPlus/EPPlusSDK.csproj b/EPPlus/EPPlusSDK.csproj
index b7b2a88..43e37d1 100644
--- a/EPPlus/EPPlusSDK.csproj
+++ b/EPPlus/EPPlusSDK.csproj
@@ -5,8 +5,8 @@
<AssemblyName>EPPlus</AssemblyName>
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>OpenOfficeXml.snk</AssemblyOriginatorKeyFile>
- <PackageId>Appsheet.EPPlus</PackageId>
- <Version>1.0.1</Version>
+ <PackageId>Apsheet.EPPlus</PackageId>
+ <Version>1.0.2</Version>
<DefaultItemExcludes>$(DefaultItemExcludes);Properties/AssemblyInfo.cs;FormulaParsing/LexicalAnalysis/TokenSeparatorHandlers/**;FormulaParsing/LexicalAnalysis/TokenHandler.cs;FormulaParsing/Excel/Functions/Math/Rank.cs</DefaultItemExcludes>
<DefineConstants>Core;STANDARD20</DefineConstants>
</PropertyGroup>
diff --git a/EPPlus/Packaging/DotNetZip/Shared.cs b/EPPlus/Packaging/DotNetZip/Shared.cs
index b03d27b..ca8f18c 100644
--- a/EPPlus/Packaging/DotNetZip/Shared.cs
+++ b/EPPlus/Packaging/DotNetZip/Shared.cs
@@ -159,7 +159,7 @@
}
- static System.Text.Encoding ibm437 = System.Text.Encoding.GetEncoding("IBM437");
+ static System.Text.Encoding ibm437 = System.Text.Encoding.ASCII;
static System.Text.Encoding utf8 = System.Text.Encoding.GetEncoding("UTF-8");
internal static byte[] StringToByteArray(string value, System.Text.Encoding encoding)
diff --git a/EPPlus/Packaging/DotNetZip/ZipEntry.cs b/EPPlus/Packaging/DotNetZip/ZipEntry.cs
index c77b579..7d727d0 100644
--- a/EPPlus/Packaging/DotNetZip/ZipEntry.cs
+++ b/EPPlus/Packaging/DotNetZip/ZipEntry.cs
@@ -57,7 +57,7 @@
_CompressionLevel = Ionic.Zlib.CompressionLevel.Default;
_Encryption = EncryptionAlgorithm.None;
_Source = ZipEntrySource.None;
- AlternateEncoding = System.Text.Encoding.GetEncoding("IBM437");
+ AlternateEncoding = System.Text.Encoding.ASCII;
AlternateEncodingUsage = ZipOption.Never;
}
@@ -2717,8 +2717,8 @@
private bool _skippedDuringSave;
private UInt32 _diskNumber;
- private static System.Text.Encoding ibm437 = System.Text.Encoding.GetEncoding("IBM437");
- //private System.Text.Encoding _provisionalAlternateEncoding = System.Text.Encoding.GetEncoding("IBM437");
+ private static System.Text.Encoding ibm437 = System.Text.Encoding.ASCII;
+ //private System.Text.Encoding _provisionalAlternateEncoding = System.Text.Encoding.ASCII;
private System.Text.Encoding _actualEncoding;
internal ZipContainer _container;
diff --git a/EPPlus/Packaging/DotNetZip/ZipFile.cs b/EPPlus/Packaging/DotNetZip/ZipFile.cs
index d0a14fe..7edaff5 100644
--- a/EPPlus/Packaging/DotNetZip/ZipFile.cs
+++ b/EPPlus/Packaging/DotNetZip/ZipFile.cs
@@ -3632,9 +3632,9 @@
private Int64 _OffsetOfCentralDirectory64;
private Nullable<bool> _OutputUsesZip64;
internal bool _inExtractAll;
- private System.Text.Encoding _alternateEncoding = System.Text.Encoding.GetEncoding("IBM437"); // UTF-8
+ private System.Text.Encoding _alternateEncoding = System.Text.Encoding.ASCII; // UTF-8
private ZipOption _alternateEncodingUsage = ZipOption.Never;
- private static System.Text.Encoding _defaultEncoding = System.Text.Encoding.GetEncoding("IBM437");
+ private static System.Text.Encoding _defaultEncoding = System.Text.Encoding.ASCII;
private int _BufferSize = BufferSizeDefault;
diff --git a/EPPlus/Packaging/DotNetZip/ZipInputStream.cs b/EPPlus/Packaging/DotNetZip/ZipInputStream.cs
index 9b879b4..30d15ad 100644
--- a/EPPlus/Packaging/DotNetZip/ZipInputStream.cs
+++ b/EPPlus/Packaging/DotNetZip/ZipInputStream.cs
@@ -346,7 +346,7 @@
if (!_inputStream.CanRead)
throw new ZipException("The stream must be readable.");
_container= new ZipContainer(this);
- _provisionalAlternateEncoding = System.Text.Encoding.GetEncoding("IBM437");
+ _provisionalAlternateEncoding = System.Text.Encoding.ASCII;
_leaveUnderlyingStreamOpen = leaveOpen;
_findRequired= true;
_name = name ?? "(stream)";
@@ -826,4 +826,4 @@
-}
\ No newline at end of file
+}
diff --git a/EPPlus/Packaging/DotNetZip/ZipOutputStream.cs b/EPPlus/Packaging/DotNetZip/ZipOutputStream.cs
index 96c16be..6ad801a 100644
--- a/EPPlus/Packaging/DotNetZip/ZipOutputStream.cs
+++ b/EPPlus/Packaging/DotNetZip/ZipOutputStream.cs
@@ -1022,7 +1022,7 @@
{
get
{
- return System.Text.Encoding.GetEncoding("IBM437");
+ return System.Text.Encoding.ASCII;
}
}
@@ -1616,7 +1616,7 @@
private int _entryCount;
private ZipOption _alternateEncodingUsage = ZipOption.Never;
private System.Text.Encoding _alternateEncoding
- = System.Text.Encoding.GetEncoding("IBM437"); // default = IBM437
+ = System.Text.Encoding.ASCII; // default = IBM437
private bool _leaveUnderlyingStreamOpen;
private bool _disposed;
@@ -1815,4 +1815,4 @@
}
}
-}
\ No newline at end of file
+}