mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-11-03 19:17:24 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			44 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
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;
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |