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"); }
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);
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 }
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!