diff options
| author | Luke <luke.pulverenti@gmail.com> | 2016-11-01 00:39:23 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-11-01 00:39:23 -0400 |
| commit | 8b1b775caa704b11da4d4b93c75d4c23633fd1f0 (patch) | |
| tree | 45b8d814b0e2107bce206c45ef520b227a962484 /MediaBrowser.Server.Implementations/TextEncoding | |
| parent | c74acaae59ff595eb05f335cad8695f98bda1a8b (diff) | |
| parent | b1276dc2084515ed817ba8b2af405a9bc1f57cd6 (diff) | |
Merge pull request #2263 from MediaBrowser/dev
Dev
Diffstat (limited to 'MediaBrowser.Server.Implementations/TextEncoding')
| -rw-r--r-- | MediaBrowser.Server.Implementations/TextEncoding/TextEncoding.cs | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/MediaBrowser.Server.Implementations/TextEncoding/TextEncoding.cs b/MediaBrowser.Server.Implementations/TextEncoding/TextEncoding.cs index c1029dfb5..4c047b7d5 100644 --- a/MediaBrowser.Server.Implementations/TextEncoding/TextEncoding.cs +++ b/MediaBrowser.Server.Implementations/TextEncoding/TextEncoding.cs @@ -1,10 +1,18 @@ using System.Text; +using MediaBrowser.Model.IO; using MediaBrowser.Model.TextEncoding; namespace MediaBrowser.Server.Implementations.TextEncoding { - public class TextEncoding : IEncoding + public class TextEncoding : IEncoding { + private readonly IFileSystem _fileSystem; + + public TextEncoding(IFileSystem fileSystem) + { + _fileSystem = fileSystem; + } + public byte[] GetASCIIBytes(string text) { return Encoding.ASCII.GetBytes(text); @@ -14,5 +22,28 @@ namespace MediaBrowser.Server.Implementations.TextEncoding { 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; + + // It's ok - anything aside from utf is ok since that's what we're looking for + return Encoding.Default; + } } } |
