| |
VB.NET - Ein- und UmsteigerDatei 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 | |
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. | |
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 | |
| 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 |
|
|
TOP! Unser Nr. 1
Neu! sevDataGrid 3.0
Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
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
|
|