TextHelper.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using System;
  2. using System.Text;
  3. namespace CueSplitter.Helpers
  4. {
  5. internal static class TextHelper
  6. {
  7. static TextHelper()
  8. {
  9. try
  10. {
  11. Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
  12. }
  13. catch
  14. {
  15. //EAT ERR
  16. }
  17. }
  18. private static Encoding TestCodePage(Encoding testCode, byte[] byteArray)
  19. {
  20. try
  21. {
  22. var encoding = Encoding.GetEncoding(testCode.CodePage, EncoderFallback.ExceptionFallback, DecoderFallback.ExceptionFallback);
  23. var a = encoding.GetCharCount(byteArray);
  24. return testCode;
  25. }
  26. catch (Exception e)
  27. {
  28. return null;
  29. }
  30. }
  31. public static Encoding DetectCodePage(byte[] contents)
  32. {
  33. if (contents == null || contents.Length == 0)
  34. {
  35. return Encoding.Default;
  36. }
  37. return TestCodePage(Encoding.UTF8, contents)
  38. ?? TestCodePage(Encoding.GetEncoding("SHIFT-JIS"), contents)
  39. ?? TestCodePage(Encoding.GetEncoding("GB2312"), contents)
  40. ?? TestCodePage(Encoding.GetEncoding("EUC-KR"), contents)
  41. ?? TestCodePage(Encoding.Unicode, contents)
  42. ?? TestCodePage(Encoding.BigEndianUnicode, contents)
  43. ?? TestCodePage(Encoding.ASCII, contents)
  44. ;
  45. }
  46. }
  47. }