[JAVA] So löschen Sie Stücklisten (UTF-8)

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.

Was ist Stückliste überhaupt?

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.

  1. Um zu zeigen, dass es in Unicode-Zeichencode geschrieben ist
  2. Zum Festlegen der Reihenfolge der Bits, die in UTF-16 und UTF-32 als Endian bezeichnet werden. Abhängig von der Reihenfolge der Anordnung ・ Big Endian (in der Reihenfolge vom höchsten Byte anordnen) ・ Little Indian (in der Reihenfolge vom niedrigsten Byte angeordnet) Es gibt zwei Arten

Warum gibt es UTF-8 (mit Stückliste)?

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.

So entfernen Sie Stücklisten

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

Referenzartikel

So entfernen Sie Stücklisten mit Java Umgang mit UTF-8 (mit Stückliste)

Recommended Posts

So löschen Sie Stücklisten (UTF-8)
[Anfänger] So löschen Sie NO FILE
So fügen Sie die Löschfunktion hinzu
So löschen Sie Daten mit einem externen Schlüssel
So zählen Sie UTF-8-Codepunkte schnell
So löschen Sie einen Controller usw. mit einem Befehl
[Für Anfänger] So implementieren Sie die Löschfunktion
So löschen Sie die Datenbank beim Neuerstellen der App
Rails "So löschen Sie NO FILE-Migrationsdateien"
So entwickeln Sie OpenSPIFe
So rufen Sie AmazonSQSAsync auf
Verwendung von Map
Wie schreibe ich Rails
Wie benutzt man rbenv?
Verwendung mit_option
Verwendung von fields_for
Verwendung von java.util.logging
Verwendung der Karte
Verwendung von collection_select
Wie benutzt man Twitter4J
Wie benutzt man active_hash! !!
So installieren Sie Docker
Verwendung von MapStruct
Verwendung von TreeSet
So deinstallieren Sie Rails
So installieren Sie Docker-Maschine
[Verwendung des Etiketts]
Wie man ein schattiertes Glas macht
Wie schreibe ich Docker-Compose
Wie man Identität benutzt
Wie man Hash benutzt
Wie schreibe ich Mockito
So erstellen Sie Docker-Compose
So installieren Sie MySQL
So schreiben Sie eine Migrationsdatei
Wie man android-midi-lib baut
Verwendung von Dozer.mapper
Wie benutzt man Gradle?
Verwendung von org.immutables
Verwendung von java.util.stream.Collector
Verwendung von VisualVM
Verwendung von Map
Wie man einen Schrägstrich zurückschlägt \
So verketten Sie Zeichenfolgen
So löschen / aktualisieren Sie das Listenfeld von OneToMany
So löschen Sie ein mit Rails erstelltes new_record-Objekt
So löschen Sie benutzerdefinierte Adapterelemente mithilfe eines benutzerdefinierten Modells
So löschen Sie mit Docker Bilder ohne Tags in großen Mengen
[Schienen] Wie poste ich Bilder?