Benutzer mit den meisten Antworten
VB.net - Bei CSV erstellen sind Sonderzeichen am Anfang der ersten Zeile

Frage
-
Hallo,
ich mal wieder.
Ich erstelle eine CSV - Datei mit folgendem Programmiercode:Dim File As File = Nothing Dim Writer As New StreamWriter(Pfad, True, Text.Encoding.UTF8) . . . Writer.WriteLine(ÜberschriftCSV) . . . Writer.Close()
In der Variable "ÜberschriftCSV" stehen mehrere Werte (ganz einfache Strings) umschlossen mit Anführungszeichen.
Z.B. "Text1";"Text2"; ...Folgendes Problem. Die CSV Dateien enthalten Artikeldaten die von einem zusätzlichen Tool eines IT-Dienstleister eingelesen werden soll und dann in ein Onlineshop hochgeladen werden. Laut diesem IT-Dienstleister stehen aber am Anfang der ersten Zeile Sonderzeichen, die ich in meinem Editor (Windows-Editor und Notepad++) nicht sehe.
Aber ich wüsste nicht was ich falsch programmiert habe, vor allem da bei mir in den Editoren ja alles passt.
Oder kann dies evtl. durch den FTP Upload da hinzugekommen sein?
Vielen Dank für Eure Hilfe!
LG Marion
Antworten
-
UTF8Encoding-Konstruktor (Boolean) sollte das hin bekommen; siehe Parameter encoderShouldEmitUTF8Identifier: true, um anzugeben, dass eine Unicode-Bytereihenfolgemarkierung (=BOM Byte Order Marker) bereitgestellt wird, andernfalls false.
Imports System.IO Module Module1 Sub Main() Dim File As File = Nothing Dim Writer As StreamWriter Writer = New StreamWriter("C:\temp\utf8_Mit.txt", True, Text.Encoding.UTF8) Writer.WriteLine("Test UTF8 mit BOM") Writer.Close() Writer = New StreamWriter("C:\temp\utf8_Ohne.txt", True, New Text.UTF8Encoding(False)) Writer.WriteLine("Test UTF8 ohne BOM") Writer.Close() End Sub End Module
Olaf Helper
[ Blog] [ Xing] [ MVP]- Als Antwort markiert Marion.M Donnerstag, 6. Februar 2014 14:17
Alle Antworten
-
Hallo Marion,
da ich das Tool aus dem Screenshot nicht kenne, kann ich auch nur raten: Unter Windows wird bei UTF8 im Standard ein BOM = Hexwert FF + FE an anfang eingefügt, um zu kennzeichnen, das es eben ein UTF8 Datei ist. Ist also gut möglich, dass das Tool das nicht kennt/mag.
Olaf Helper
[ Blog] [ Xing] [ MVP] -
Hi, danke für die schnelle Antwort.
Hab ich mir schon fast gedacht, dass das an dem Unterschied Windows <> MacOS liegt ;)
Weißt du zufälligerweise ob man das irgendwie abfangen kann, also das dann kein BOM angefügt wird bzw. kann man das wieder entfernen?Das Problem ist, dass der Dienstleister die Datei in UTF-8 braucht, ich kann da also auch kein anderes Dateiformat nehmen =(
-
UTF8Encoding-Konstruktor (Boolean) sollte das hin bekommen; siehe Parameter encoderShouldEmitUTF8Identifier: true, um anzugeben, dass eine Unicode-Bytereihenfolgemarkierung (=BOM Byte Order Marker) bereitgestellt wird, andernfalls false.
Imports System.IO Module Module1 Sub Main() Dim File As File = Nothing Dim Writer As StreamWriter Writer = New StreamWriter("C:\temp\utf8_Mit.txt", True, Text.Encoding.UTF8) Writer.WriteLine("Test UTF8 mit BOM") Writer.Close() Writer = New StreamWriter("C:\temp\utf8_Ohne.txt", True, New Text.UTF8Encoding(False)) Writer.WriteLine("Test UTF8 ohne BOM") Writer.Close() End Sub End Module
Olaf Helper
[ Blog] [ Xing] [ MVP]- Als Antwort markiert Marion.M Donnerstag, 6. Februar 2014 14:17