Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1549 | Anzahl registrierter User: 1833 | Besucher online: 783
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Unicode-Encoding ermitteln


Autor: Matthias Friedrich
Sprache: C#
Bewertung: 9
(1 Bewertung)
Anzahl der Aufrufe: 8307
  
Kick it on dotnet-kicks.de  

Beschreibung:

Eine Funktion, die durch Auswertung der Byte-Order, die passende Unicode-Encoding ermittelt.

Abgelegt unter: Characterset Encoding, utf-8, utf-16, utf-32, detect, ermitteln.



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
using System;

/// <summary>
/// EncodingHelper
/// </summary>
public class EncodingHelper
{
    /// <summary>
    /// 
    /// </summary>
    /// <param name="s"></param>
    /// <returns></returns>
	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;
	}
}

Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)



schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.