using System; using System.Text; namespace CueSplitter.Helpers { internal static class TextHelper { static TextHelper() { try { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); } catch { //EAT ERR } } private static Encoding TestCodePage(Encoding testCode, byte[] byteArray) { try { var encoding = Encoding.GetEncoding(testCode.CodePage, EncoderFallback.ExceptionFallback, DecoderFallback.ExceptionFallback); var a = encoding.GetCharCount(byteArray); return testCode; } catch (Exception e) { return null; } } public static Encoding DetectCodePage(byte[] contents) { if (contents == null || contents.Length == 0) { return Encoding.Default; } return TestCodePage(Encoding.UTF8, contents) ?? TestCodePage(Encoding.GetEncoding("SHIFT-JIS"), contents) ?? TestCodePage(Encoding.GetEncoding("GB2312"), contents) ?? TestCodePage(Encoding.GetEncoding("EUC-KR"), contents) ?? TestCodePage(Encoding.Unicode, contents) ?? TestCodePage(Encoding.BigEndianUnicode, contents) ?? TestCodePage(Encoding.ASCII, contents) ; } } }