diff --git a/Source/lib/common/StringUtils.cs b/Source/lib/common/StringUtils.cs
index f321e000..46a8fba9 100644
--- a/Source/lib/common/StringUtils.cs
+++ b/Source/lib/common/StringUtils.cs
@@ -28,43 +28,31 @@ namespace ZXing.Common
public static class StringUtils
{
#if (WINDOWS_PHONE || SILVERLIGHT4 || SILVERLIGHT5 || NETFX_CORE || PORTABLE || NETSTANDARD)
- ///
- /// default encoding of the current platform (name) (UTF-8)
- ///
- public static readonly String PLATFORM_DEFAULT_ENCODING = UTF8;
- ///
- /// default encoding of the current platform (name) (UTF-8)
- ///
- public static readonly Encoding PLATFORM_DEFAULT_ENCODING_T = Encoding.UTF8;
-#else
///
/// default encoding of the current platform (name)
///
- public static readonly String PLATFORM_DEFAULT_ENCODING = Encoding.Default.WebName.ToUpper();
+ public static readonly String PLATFORM_DEFAULT_ENCODING;
///
/// default encoding of the current platform (type)
///
- public static readonly Encoding PLATFORM_DEFAULT_ENCODING_T = Encoding.Default;
-#endif
+ public static readonly Encoding PLATFORM_DEFAULT_ENCODING_T;
///
/// Shift JIS encoding if available
///
- public static readonly Encoding SHIFT_JIS_ENCODING = CharacterSetECI.getEncoding(SHIFT_JIS);
+ public static readonly Encoding SHIFT_JIS_ENCODING;
///
/// GB 2312 encoding if available
///
- public static readonly Encoding GB2312_ENCODING = CharacterSetECI.getEncoding(GB2312);
+ public static readonly Encoding GB2312_ENCODING;
///
/// ECU JP encoding if available
///
- public static readonly Encoding EUC_JP_ENCODING = CharacterSetECI.getEncoding(EUC_JP);
+ public static readonly Encoding EUC_JP_ENCODING;
///
/// ISO8859-1 encoding if available
///
- public static readonly Encoding ISO88591_ENCODING = CharacterSetECI.getEncoding(ISO88591);
- private static readonly bool ASSUME_SHIFT_JIS =
- SHIFT_JIS_ENCODING.Equals(PLATFORM_DEFAULT_ENCODING_T) ||
- EUC_JP_ENCODING.Equals(PLATFORM_DEFAULT_ENCODING_T);
+ public static readonly Encoding ISO88591_ENCODING;
+ private static readonly bool ASSUME_SHIFT_JIS;
// Retained for ABI compatibility with earlier versions
///
@@ -88,6 +76,24 @@ public static class StringUtils
///
public const String ISO88591 = "ISO-8859-1";
+ static StringUtils()
+ {
+#if (NETFX_CORE || PORTABLE || NETSTANDARD)
+ PLATFORM_DEFAULT_ENCODING = UTF8;
+ PLATFORM_DEFAULT_ENCODING_T = Encoding.UTF8;
+#else
+ PLATFORM_DEFAULT_ENCODING = Encoding.Default.WebName.ToUpper();
+ PLATFORM_DEFAULT_ENCODING_T = Encoding.Default;
+#endif
+ SHIFT_JIS_ENCODING = CharacterSetECI.getEncoding(SHIFT_JIS);
+ GB2312_ENCODING = CharacterSetECI.getEncoding(GB2312);
+ EUC_JP_ENCODING = CharacterSetECI.getEncoding(EUC_JP);
+ ISO88591_ENCODING = CharacterSetECI.getEncoding(ISO88591);
+ ASSUME_SHIFT_JIS =
+ PLATFORM_DEFAULT_ENCODING_T.Equals(SHIFT_JIS_ENCODING) ||
+ PLATFORM_DEFAULT_ENCODING_T.Equals(EUC_JP_ENCODING);
+ }
+
///
/// Guesses the encoding.
///
@@ -295,7 +301,7 @@ public static Encoding guessCharset(byte[] bytes, IDictionary= 3 valid consecutive not-ascii characters (and no evidence it can't be), done
- if (canBeShiftJIS && (ASSUME_SHIFT_JIS || sjisMaxKatakanaWordLength >= 3 || sjisMaxDoubleBytesWordLength >= 3))
+ if (canBeShiftJIS && (ASSUME_SHIFT_JIS || sjisMaxKatakanaWordLength >= 3 || sjisMaxDoubleBytesWordLength >= 3) && SHIFT_JIS_ENCODING != null)
{
return SHIFT_JIS_ENCODING;
}
@@ -304,18 +310,18 @@ public static Encoding guessCharset(byte[] bytes, IDictionary= length
? SHIFT_JIS_ENCODING : ISO88591_ENCODING;
}
// Otherwise, try in order ISO-8859-1, Shift JIS, UTF-8 and fall back to default platform encoding
- if (canBeISO88591)
+ if (canBeISO88591 && ISO88591_ENCODING != null)
{
return ISO88591_ENCODING;
}
- if (canBeShiftJIS)
+ if (canBeShiftJIS && SHIFT_JIS_ENCODING != null)
{
return SHIFT_JIS_ENCODING;
}