Feedback

C# - Unicode-Encoding ermitteln

Veröffentlicht von am 21.02.2008
(1 Bewertungen)
Eine Funktion, die durch Auswertung der Byte-Order, die passende Unicode-Encoding ermittelt.
GFU-Schulungen  [Anzeige]

C# Aufbaukurs

Sie haben grundlegende .NET- und C#-Kenntnisse und und wollen diese nun erweitern. Der Aufbaukurs C# führt Sie ein die Arbeit mit Interfaces und Delegates, Generics und Parallel Computing.

JavaScript für .NET-Entwickler

Sie sind .NET-Entwickler und nun stehen Sie vor der Aufgabe, JavaScript in Ihre Arbeit einzubinden. Die Schulung vermittelt Ihnen die JavaScript Grundlagen und die Funktionen der Scriptsprache. Sie wissen, wie objektorientierte Programmierung in JavaScript funktioniert und lernen abschließend Best Practicies Fälle kennen.

using System;

public class EncodingHelper
{
    public static System.Text.Encoding DetectUnicodeEncoding(
	    System.IO.Stream s)
    {
	    if (s.CanSeek == false)
	        throw new InvalidOperationException();

    /*  EF BB BF 	UTF-8
        FF FE 	        UTF-16, little endian
        FE FF 	        UTF-16, big endian
        FF FE 00 00 	UTF-32, little endian
        00 00 FE FF 	UTF-32, big-endian */
        
        byte[] byteOrder = new byte[4];
        
        s.Read(byteOrder, 0, byteOrder.Length);
        
        s.Seek(0, System.IO.SeekOrigin.Begin);
        
        if ((byteOrder[0] == 0xEF) && (byteOrder[1] == 0xBB) && (byteOrder[2] == 0xBF))
            return System.Text.Encoding.UTF8;
        
        else if ((byteOrder[0] == 0xFF) && (byteOrder[1] == 0xFE))
            return System.Text.Encoding.Unicode;
        
        else if ((byteOrder[0] == 0xFE) && (byteOrder[1] == 0xFF))
            throw new NotSupportedException();
        
        else if ((byteOrder[0] == 0xFF) && (byteOrder[1] == 0xFE) && (byteOrder[2] == 0x0) && (byteOrder[3] == 0x0))
            return System.Text.Encoding.UTF32;
        
        else if ((byteOrder[0] == 0x0) && (byteOrder[1] == 0x0) && (byteOrder[2] == 0xFE) && (byteOrder[3] == 0xFF))
            throw new NotSupportedException(); 
            
        return null;
    }
}

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!