vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Datei auslesen ANSI oder UTF-8 Format? 
Autor: Jenpet
Datum: 05.07.12 16:30

kann man an einer excel oder csv datei erkennen ob sie im ANSI oder UTF-8 format geschrieben wurde?

ich lese zur zeit eine csv datei aus und diese ist in ANSI format geschrieben
es könnte aber sein das demnächst paar dateien hinzukommen die im UTF-8 format sind

Dim OrdnerName As String = Pfad + "\"             ' Pfad zum Ordner 
Dim Dateiliste() As String
 
 
Dateiliste = Directory.GetFiles(OrdnerName, "*." + Dateityp) ' Welcher Typ soll 
' eingelesen werden
For Each Datei As String In Dateiliste                                                        
Dim afile As FileIO.TextFieldParser           ' Datei die aufgeteilt werden soll
afile = New FileIO.TextFieldParser(Datei, System.Text.Encoding.GetEncoding( _
  1252))
mit System.Text.Ecoding.GetEncoding(1252) sage ich dass die datei im ANSI format ist

kann ich aber an der Datei selbst erkennen ob sie ANSI oder UTF-8 ist und dann das entsprechende format mit getEncoding übergeben?
z.b. direkt als parameter an die funktion
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Datei auslesen ANSI oder UTF-8 Format? 
Autor: Preisser
Datum: 05.07.12 17:00

Hallo,

Texteditoren verwenden meistens bei Unicodeformaten wie UTF-8 eine BOM (Byte Order Mark), um das Dateiformat zu kennzeichnen. Bei der UTF-8-BOM handelt es sich um 3 Bytes mit den Werten 0xEF 0xBB 0xBF, die ganz am Anfang der Datei stehen.

Anhand dieser BOM kann der StreamReader die Kodierung der Datei automatisch erkennen, wenn man z.B. den Konstruktur StreamReader(Stream, Encoding, Boolean) verwendet (das angegebene Encoding wird verwendet, wenn die Kodierung nicht durch eine BOM ermittelt werden konnte). Man könnte dann "true" für detectEncodingFromByteOrderMarks und Encoding.GetEncoding(1252) als Standardkodierung angeben.

Allerdings werden manche UTF-8-Dateien auch ohne BOM gespeichert. In dem Fall ist das automatische Erkennen der Kodierung nicht mehr so einfach möglich. Man kann aber beispielsweise probieren, zuerst die Datei als UTF-8 einzulesen, und sobald es einen Dekodierungsfehler gibt (z.B. ein Byte mit einem Wert >= 0xC0, auf das ein Byte mit einem Wert < 0x80 folgt, wie bei deutschen Umlauten, die als ANSI gespeichert sind), kann man dann das Einlesen abbrechen und die Datei nochmals mit einer ANSI-Kodierung (Windows-1252) einlesen.

Beitrag wurde zuletzt am 05.07.12 um 17:25:49 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Datei auslesen ANSI oder UTF-8 Format? 
Autor: Jenpet
Datum: 06.07.12 08:47

danke für die antwort!

das mit der BOM kannte ich bis jetzt noch nicht und hab vorher auch nichts dazu bei google gefunden

ich werde es mal so versuchen
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel