Rubrik: Dateisystem · Dateien lesen/schreiben | VB-Versionen: VB6 | 11.07.12 |
Erkennen, ob eine Datei im UTF-8 Format gespeichert ist Diese Funktion prüft anhand der ersten drei Bytes einer Datei, ob diese im Unicodeformat UTF-8 -Format gespeichert wurde. | ||
Autor: Dieter Otter | Bewertung: | Views: 20.486 |
www.tools4vb.de | System: WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
So manchmal wundert man sich vielleicht, dass beim Einlesen von "fremden" Textdateien der Inhalt nicht einwandfrei ausgelesen werden kann.
Öffnet man die Textdatei mit dem Windows Editor wird diese jedoch korrekt angezeigt. Das liegt meist daran, dass die Datei im Unicodeformat gespeichert wurde (meist UTF-8), statt mit dem ANSI Zeichensatz.
Nachfolgend stellen wir Ihnen eine Routine vor, die die ersten drei Bytes der Datei auf die Zeichenfolge 0xEF 0xBB 0xBF hin prüft. Hierbei handelt es sich um die UTF8-BOM (Byte Order Mark), um das Dateiformat zu kennzeichnen.
' Prüft, ob die Datei im Unicodeformat UTF-8 gespeichert wurde Public Function IsUTF8Encoded(ByVal sFile As String) As Boolean Dim F As Integer Dim Buffer() As Byte ' Datei im Binary-Mode öffnen F = FreeFile Open sFile For Binary Shared As #F ' ersten 3 Bytes lesen, um festzustellen, ob die Datei im ' Unicode-Format UTF-8 gespeichert ist ReDim Buffer(2) Get #F, 3, Buffer Close #F IsUTF8Encoded = (Buffer(0) = 191 And Buffer(1) = 84 And Buffer(2) = 101) End Function