wie entfernen Sie die BOM() Zeichen aus einer UTF-8-kodierten csv?
Muss ich parse eine utf8 codierte csv. Nach der Konvertierung habe ich gerade gesehen, dass das problem mit dem BOM () Zeichen am beginging. Ich kann nicht erstellen Sie eine csv-Vermeidung der Stückliste mit der utf8-Codierung, wie ich brauche, um zu analysieren, selbst wenn es ist utf8 codiert.
Alle einer bitte sagen Sie mir, wie kann ich das entfernen der BOM () Zeichen aus einer csv mit c#.net..
Update : ich habe meinen code zum Lesen der csv-Header, da ich immer das BOM am Anfang der Datei.
string CSVConnectionString = "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" + ConfigurationSettings.AppSettings["CSVFolder"].ToString() + ";Extensions=asc,csv,tab,txt;Persist Security Info=False;";
using (OdbcConnection Connection = new OdbcConnection(CSVConnectionString))
{
List<string> CSVHeaders = new List<string>();
string SelectQuery = string.Format(@"SELECT TOP 1 * FROM [{0}]", CSVFileName);
OdbcCommand Command = new OdbcCommand(SelectQuery, Connection);
Connection.Open();
OdbcDataReader Reader = Command.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
int ColumnCount = Reader.FieldCount;
for (int column = 0; column < ColumnCount; column++)
{
CSVHeaders.Add(Reader.GetName(column));
}
return CSVHeaders;
}
- Sie nicht brauchen, um das BOM entfernen, Sie brauchen nur die Datei zu Lesen, richtig. Was macht der code Aussehen?
- Jeff, ich bearbeitet haben meine Frage mit dem code
- Ich konnte die Datei nicht Lesen richtig, denn es wurde gelesen als ein Teil von einem upload in Solr. Ich musste Strahlen die Datei ohne BOM, da in Simon ' s neues bei UTF8Encoding(false)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist eine Funktion, die Folgendes tut:
Eigentlich C# Lesen kann UTF-8 kodierte Dateien, die einen BOM-einfach nur gut. Es ist die kaputte CSV-text-Treiber, die Sie verwenden, die tatsächlich das problem verursacht. Ich würde empfehlen, einen der anderen CSV-reading-Lösungen von diese Antwort.
FileReader
undFileWriter
Kombination erstellen Sie einePath.GetTempFilename()
Kopie der Datei ohne die StücklistenStatt Pferdewechsel (verwenden Sie eine andere .csv-Treiber) oder helfen, die gegebene Pferd durch ziehen der Wagen selbst (änderung der Codierung), sollten Sie sagen, das Pferd (der standard-ODBC-Text-Treiber), was es braucht, um zu wissen, um die Arbeit zu tun, indem ein schema.ini-Datei:
definieren Sie das format der withbomgood.txt:
die eine exakte Kopie der withbombad.txt; beide Dateien haben eine Stückliste:
Wenn Sie rufen nun eine leicht modifizierte Kopie
Ihren code zweimal:
erhalten Sie:
beweist, dass die Fahrer Lesen einer UTF8 mit BOM-Datei richtig und ohne weiteres, wenn Sie die Regel zu Folgen: definieren Sie Ihre csv-Tabellen in einem schema.ini-Datei.
Col#={ColumnName} {Type}
- format, mit der Ausnahme, dass für die erste Spalte, die ich angegebenCHAR
für die Art, obwohl in meinem Fall war es wirklich einLong
. Referenz [msdn.microsoft.com/en-us/library/windows/desktop/....