12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- using System.Text;
- using MediaBrowser.Model.IO;
- using MediaBrowser.Model.Text;
- namespace Emby.Common.Implementations.TextEncoding
- {
- public class TextEncoding : ITextEncoding
- {
- private readonly IFileSystem _fileSystem;
- public TextEncoding(IFileSystem fileSystem)
- {
- _fileSystem = fileSystem;
- }
- public Encoding GetASCIIEncoding()
- {
- return Encoding.ASCII;
- }
- 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;
- }
- }
- }
|