Heim > Java > javaLernprogramm > Hauptteil

Wie behalte ich die Stückliste beim Lesen von UTF-8-Dateien in Java bei?

Mary-Kate Olsen
Freigeben: 2024-11-24 15:44:15
Original
632 Leute haben es durchsucht

How to Retain the BOM When Reading UTF-8 Files in Java?

Lesen von UTF-8 mit BOM-Markierung: Verständnis der unerwarteten BOM-Ausgabe

Beim Lesen von Dateien, die in UTF-8 mit einer Byte-Reihenfolge codiert sind Markieren Sie (Stückliste). Es ist möglich, dass die Stückliste in der Ausgabezeichenfolge enthalten ist. Dies liegt daran, dass die BOM, eine Unicode-Kennung, als bestimmte Bytesequenz am Anfang der Datei gespeichert wird.

Im angegebenen Java-Code werden FileReader und BufferedReader entsprechend für das Lesen von UTF-8-Dateien verwendet . Das Problem tritt jedoch in der folgenden Zeile auf:

text = new String(tmp.getBytes(), "UTF-8");
Nach dem Login kopieren

Diese Zeile versucht, die im tmp-String gespeicherten Bytes mithilfe des UTF-8-Zeichensatzes zu dekodieren. Die Methode getBytes() für einen String behält jedoch nicht die Stücklistenmarkierung aus der Originaldatei bei. Infolgedessen ignoriert der Dekodierungsprozess die Stückliste und sie geht praktisch verloren.

Um die Stücklistenmarkierung in der Ausgabezeichenfolge beizubehalten, ist eine geringfügige Anpassung des Codes erforderlich:

byte[] bytes = tmp.getBytes("UTF-8");
if (isUTF8WithBOM(bytes)) {
    text = new String(bytes, 3, bytes.length - 3);
} else {
    text = new String(bytes, "UTF-8");
}
Nach dem Login kopieren

Die Methode isUTF8WithBOM prüft, ob das Byte-Array mit der UTF-8-Stücklistensequenz (0xEF, 0xBB, 0xBF) beginnt. Wenn „true“, wird das BOM entfernt, indem das Byte-Array so aufgeteilt wird, dass es beim dritten Byte beginnt. Dadurch wird sichergestellt, dass der anschließende Decodierungsprozess die Stücklistenmarkierung in die Ausgabezeichenfolge einbezieht.

Das obige ist der detaillierte Inhalt vonWie behalte ich die Stückliste beim Lesen von UTF-8-Dateien in Java bei?. 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