From f52373609eac871c2883e1052020ff5327b19707 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 3 Nov 2016 18:34:16 -0400 Subject: move classes to portable project --- .../TextEncoding/TextEncoding.cs | 48 ++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 Emby.Common.Implementations/TextEncoding/TextEncoding.cs (limited to 'Emby.Common.Implementations/TextEncoding/TextEncoding.cs') diff --git a/Emby.Common.Implementations/TextEncoding/TextEncoding.cs b/Emby.Common.Implementations/TextEncoding/TextEncoding.cs new file mode 100644 index 000000000..35b869e43 --- /dev/null +++ b/Emby.Common.Implementations/TextEncoding/TextEncoding.cs @@ -0,0 +1,48 @@ +using System.Text; +using MediaBrowser.Model.IO; +using MediaBrowser.Model.TextEncoding; + +namespace Emby.Common.Implementations.TextEncoding +{ + public class TextEncoding : IEncoding + { + private readonly IFileSystem _fileSystem; + + public TextEncoding(IFileSystem fileSystem) + { + _fileSystem = fileSystem; + } + + public byte[] GetASCIIBytes(string text) + { + return Encoding.ASCII.GetBytes(text); + } + + public string GetASCIIString(byte[] bytes, int startIndex, int length) + { + return Encoding.ASCII.GetString(bytes, 0, bytes.Length); + } + + public Encoding GetFileEncoding(string srcFile) + { + // *** Detect byte order mark if any - otherwise assume default + var buffer = new byte[5]; + + using (var file = _fileSystem.OpenRead(srcFile)) + { + file.Read(buffer, 0, 5); + } + + if (buffer[0] == 0xef && buffer[1] == 0xbb && buffer[2] == 0xbf) + return Encoding.UTF8; + if (buffer[0] == 0xfe && buffer[1] == 0xff) + return Encoding.Unicode; + if (buffer[0] == 0 && buffer[1] == 0 && buffer[2] == 0xfe && buffer[3] == 0xff) + return Encoding.UTF32; + if (buffer[0] == 0x2b && buffer[1] == 0x2f && buffer[2] == 0x76) + return Encoding.UTF7; + + return null; + } + } +} -- cgit v1.2.3