Ich habe die Verarbeitung im Zusammenhang mit Dateivorgängen in Unternehmen implementiert, jedoch aus einer UTF-8-Datei (mit Stückliste) Nachdem Sie gelernt haben, Stücklisten zu entfernen, fasse ich sie für die Zukunft zusammen.
Wer ist überhaupt Stückliste?
Grob gesagt mit Stückliste ** Eine Markierung am Anfang einer Datei, die mit einem Unicode-Zeichencode erstellt wurde **. In UTF-8 wird es durch 3 Bytes ** 0xEF 0xBB 0xBF ** dargestellt. Stücklisten sind in Notizblöcken normalerweise nicht sichtbar, befinden sich jedoch am Anfang des Dateiinhalts Es wird mit einer Stückliste geliefert, und wenn es vom Computer gelesen wird, wird es auf diese Weise interpretiert und ausgeführt. Und es hat zwei Hauptrollen als Meilenstein.
Bei der Zuordnung zu Zeichen mit einem Zeichencode von 2 Byte oder mehr, z. B. UTF-16 und UTF-32 Stückliste wird verwendet, um die Reihenfolge der Ender anzugeben. Wenn Sie jedoch einen 1-Byte-Zeichencode wie UTF-8 verwenden, Sie müssen kein Endian angeben. Warum gibt es UTF-8 (mit Stückliste)?
Nach der Untersuchung stellte ich fest, dass die Ursache die Spezifikation war, als Excel CSV öffnete. Wenn Excel CSV öffnet, wird versucht, es mit Shift-JIS zu öffnen, also mit UTF-8 ohne Stückliste Wenn ich versuche, die geschriebene Datei zu lesen, sind die Zeichen verstümmelt. Um dies zu verhindern, verwenden Sie auch beim Öffnen von CSV mit Stückliste den Unicode-Zeichencode Sie müssen angeben, um es zu lesen.
Jetzt werde ich erklären, wie die Stückliste gelöscht wird, die das Hauptthema ist. Java geht nicht davon aus, dass UTF-8 überhaupt eine Stückliste hat. Daher sollte beim Lesen einer Datei mit Stückliste die Stückliste als weiteres Zeichen verwendet werden. Behandeln Sie es als ähnlich und löschen Sie die Stückliste nicht. Wenn Sie die Stückliste löschen möchten, müssen Sie einen solchen Prozess daher separat implementieren.
Java
//Unicode-Code-Anzeige der Stückliste
public static final String BOM = "\uFEFF";
/**
*Wenn die Datei eine Stückliste enthielt
*Ohne Stückliste konvertieren.
*
* @param s Dateizeichenfolge
* @Dateizeichenfolge ohne Rückgabe Stückliste
*
*/
private static String removeUTF8BOM(String s) {
if (s.startsWith(BOM)) {
//Lesen Sie die Zeichenfolge nach dem Beginn der Datei
s = s.substring(1);
}
return s;
}
Eine andere Methode besteht darin, die von Apache bereitgestellte Klassenbibliothek zu verwenden. Siehe unten für detaillierte Spezifikationen.
Klasse zum Lesen von Dateien mit Stückliste
So entfernen Sie Stücklisten mit Java Umgang mit UTF-8 (mit Stückliste)
Recommended Posts