Heim > Java > javaLernprogramm > Wie gehe ich mit Stücklistenmarkierungen beim Lesen von UTF-8-Dateien um?

Wie gehe ich mit Stücklistenmarkierungen beim Lesen von UTF-8-Dateien um?

Mary-Kate Olsen
Freigeben: 2024-11-26 10:59:12
Original
908 Leute haben es durchsucht

How to Handle BOM Markers in UTF-8 File Reading?

Umgang mit Stücklistenmarkierungen beim Lesen von UTF-8-Dateien

Beim Umgang mit UTF-8-kodierten Textdateien, die möglicherweise eine Bytereihenfolgemarkierung enthalten ( (Stückliste) ist es wichtig, die Stückliste korrekt zu handhaben, um unerwartete Ausgaben zu vermeiden. Eine Stückliste ist eine spezielle Bytefolge, die die Bytereihenfolge der Datei angibt. In UTF-8 ist die Stückliste die Drei-Byte-Sequenz EF BB BF.

Bedenken Sie den folgenden Code:

fr = new FileReader(file);
br = new BufferedReader(fr);
String tmp = null;
while ((tmp = br.readLine()) != null) {
    String text;    
    text = new String(tmp.getBytes(), "UTF-8");
    content += text + System.getProperty("line.separator");
}
Nach dem Login kopieren

In diesem Code wird die Stückliste in die Ausgabezeichenfolge eingefügt Text, da die Methode getBytes() die Rohbytes der Zeichenfolge einschließlich der Stückliste abruft. Um die Stückliste korrekt zu handhaben, können Sie die folgenden Techniken verwenden:

Methode 1: Geben Sie den BOM-Zeichensatz an

Sie können den Zeichensatz als UTF-8 mit angeben Stückliste mit der Charset-Klasse:

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

Methode 2: Lesen und Löschen der Stückliste

Wenn die Stückliste nicht erforderlich ist, können Sie sie lesen und löschen, bevor Sie den Rest der Datei verarbeiten:

char[] bom = new char[3];
int bytesRead = br.read(bom, 0, bom.length);
if (bytesRead == bom.length && new String(bom).equals("\uFEFF")) {
    // BOM exists, drop it
}
Nach dem Login kopieren

Durch die Implementierung einer dieser Techniken können Sie sicherstellen dass die Stückliste korrekt gehandhabt wird und dass die Ausgabezeichenfolge die Stücklistenmarkierung nicht enthält.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit Stücklistenmarkierungen beim Lesen von UTF-8-Dateien um?. 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