Heim > Java > javaLernprogramm > Hauptteil

Wie vermeide ich die Ausgabe der Stücklistenmarkierung beim Lesen einer UTF-8-codierten Datei?

Mary-Kate Olsen
Freigeben: 2024-11-16 22:43:03
Original
255 Leute haben es durchsucht

How to Avoid Outputting the BOM Marker When Reading a UTF-8 Encoded File?

Unicode BOM und FileReader

Beim Lesen einer UTF-8-codierten Datei mit einer Byte Order Mark (BOM) kann das Problem auftreten des Stücklistenmarkers, der zusammen mit dem Dateiinhalt ausgegeben wird. Dies liegt daran, dass Unicode eine Stückliste definiert, um die Endianness des codierten Texts anzugeben, die bei unsachgemäßer Handhabung als Zeichenfolge interpretiert werden kann.

In Ihrem Code-Snippet:

  • fr und br werden verwendet, um die Datei als Bytes zu lesen und in Zeichen umzuwandeln.
  • tmp liest jede Zeile der Datei als Byte-Array.
  • text konvertiert das Byte-Array in ein UTF-8 codierte Zeichenfolge.
  • Inhalt verkettet die Zeilen der Datei, einschließlich der Stücklistenmarkierung, da diese Teil des Dateiinhalts ist.

Um zu vermeiden, dass die Stücklistenmarkierung in die Ausgabe einbezogen wird :

  1. Lesen Sie die Datei als String, nicht als Byte-Array. Dadurch entfällt die Notwendigkeit, Bytes in Zeichen umzuwandeln, und das Stücklistenproblem wird vermieden.
String content = new String(Files.readAllBytes(Paths.get(file)), "UTF-8"));
Nach dem Login kopieren
  1. Wenn Sie die Datei als Byte-Array lesen müssen, können Sie die Stücklistenmarkierung vor der Konvertierung manuell entfernen es zu einer Zeichenfolge. Die Stücklistenmarkierung ist eine Drei-Byte-Sequenz:
if (tmp.length >= 3 &&
    tmp[0] == (byte) 0xEF &&
    tmp[1] == (byte) 0xBB &&
    tmp[2] == (byte) 0xBF) {

    // Remove the BOM marker
    tmp = Arrays.copyOfRange(tmp, 3, tmp.length);
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie vermeide ich die Ausgabe der Stücklistenmarkierung beim Lesen einer UTF-8-codierten Datei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage