diff --git a/ArcFormats/PkWare/ArcZIP.cs b/ArcFormats/PkWare/ArcZIP.cs index 52e5d359..44edcea5 100644 --- a/ArcFormats/PkWare/ArcZIP.cs +++ b/ArcFormats/PkWare/ArcZIP.cs @@ -186,18 +186,9 @@ namespace GameRes.Formats.PkWare public override ResourceOptions GetDefaultOptions () { - Encoding enc; - try - { - enc = ZipEncoding.Get(); - } - catch - { - enc = Encodings.cp932; - } return new ZipOptions { CompressionLevel = Properties.Settings.Default.ZIPCompression, - FileNameEncoding = enc, + FileNameEncoding = ZipEncoding.Get(), Password = Properties.Settings.Default.ZIPPassword, }; } diff --git a/ArcFormats/ResourceSettings.cs b/ArcFormats/ResourceSettings.cs index 0a53132f..0440fd14 100644 --- a/ArcFormats/ResourceSettings.cs +++ b/ArcFormats/ResourceSettings.cs @@ -3,7 +3,9 @@ //! \brief Persistent resource settings implementation. // +using System; using System.ComponentModel.Composition; +using System.Diagnostics; using System.Text; using GameRes.Formats.Strings; @@ -27,8 +29,20 @@ namespace GameRes.Formats internal class EncodingSetting : LocalResourceSetting { + static readonly Encoding DefaultEncoding = Encodings.cp932; + public override object Value { - get { return Encoding.GetEncoding ((int)base.Value); } + get { + try + { + return Encoding.GetEncoding ((int)base.Value); + } + catch // fallback to CP932 + { + Trace.WriteLine (string.Format ("Unknown encoding code page {0}", base.Value)); + return DefaultEncoding; + } + } set { base.Value = ((Encoding)value).CodePage; } }