CSV-Datei in UTF 8 ohne BOM
Thomas
ich habe mal eine wahrscheinlich etwas abgedrehte Frage.
Ich erzeuge mit einem Excel-Makro eine CSV-Datei, wandele diese mit VBA in eine CSV-Datei mit UTF-8 Codierung um. Wenn ich nun überprüfe, ob die Datei ein BOM hat, bekomme ich nein.
Code zur Erzeugen einer csv-Datei mit UTF-Codierung. In strText sind alle Zeilen der Excel-Tabelle enthalten. 65001 entspricht UTF8. strDateinamen enthält den Namen der CSV-Datei.
'Umwandlung Text mit Hilfe WideCharTiMultiByte
Sub Test
lngLength = Len(strText)
lngPointer = StrPtr(strText)
lngSize = WideCharToMultiByte(65001, 0&, lngPointer, lngLength, 0&, 0&, 0&, 0&)
ReDim bytBuffer(0 To lngSize - 1)
Call WideCharToMultiByte(65001, 0&, lngPointer, lngLength, VarPtr(bytBuffer(0)), lngSize, 0&, 0& _
)
'String in nächste freie Textdatei schreiben
intFileNumber = FreeFile
Open strDateinamen For Binary Access Write As #intFileNumber
Put #intFileNumber, , bytBuffer
Close #intFileNumber
End sub
Routine zum prüfen, ob ein BOM vorhanden ist.
Sub BOM_Prüfen()
Dim fso As New FileSystemObject
Dim strTest As String
strTest = fso.OpenTextFile(F, ForReading).ReadAll
If Left(strTest, 3) = "" Then
MsgBox "8"
ElseIf Left(strTest, 2) = "þÿ" Or Left(strTest, 2) = "ÿþ" Then
MsgBox "16"
Else
MsgBox "ohne BOM"
End If
End Sub
Wenn mein Kollege die Datei mit ultraedit öffnet, wird UTF16 als Codierung und ein anderes BOM angezeigt.Falls einer von Euch eine Idee hat: vielen Dank.
Viele Grüße
Thomas