Ich habe Probleme beim Lesen von Textdateien mit der UTF-8-Codierung Ich verwende Java mit der Netbeans-7.2.1-Plattform
Das Java-Projekt wurde bereits für die Verarbeitung von UTF-8 konfiguriert Javaproject ==> Rechtsklick ==> Eigenschaften ==> source ==> UTF-8
holen Sie sich trotzdem die unbekannte Zeichenausgabe:
der Code:
File fileDirs = new File("C:\\file.txt");
BufferedReader in = new BufferedReader(
new InputStreamReader(new FileInputStream(fileDirs), "UTF-8"));
String str;
while ((str = in.readLine()) != null) {
System.out.println(str);
}
irgendwelche anderen Ideen?
vielen Dank
Benutzen
import Java.io.BufferedReader;
import Java.io.File;
import Java.io.FileInputStream;
import Java.io.IOException;
import Java.io.InputStreamReader;
import Java.io.UnsupportedEncodingException;
public class test {
public static void main(String[] args){
try {
File fileDir = new File("PATH_TO_FILE");
BufferedReader in = new BufferedReader(
new InputStreamReader(new FileInputStream(fileDir), "UTF-8"));
String str;
while ((str = in.readLine()) != null) {
System.out.println(str);
}
in.close();
}
catch (UnsupportedEncodingException e)
{
System.out.println(e.getMessage());
}
catch (IOException e)
{
System.out.println(e.getMessage());
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
}
}
Sie müssen UTF-8 in Anführungszeichen setzen
Sie lesen die Datei richtig, aber das Problem scheint die Standardcodierung von System.out
zu sein. Versuchen Sie dies, um den UTF-8
string- zu drucken.
PrintStream out = new PrintStream(System.out, true, "UTF-8");
out.println(str);
Sie müssen die Kodierung des InputStreamReader mithilfe des Parameters Charset angeben.
Charset inputCharset = Charset.forName("ISO-8859-1");
InputStreamReader isr = new InputStreamReader(fis, inputCharset));
Das ist Arbeit für mich. ich hoffe Dir zu helfen.
Ich bin jedes Mal auf dasselbe Problem gestoßen, wenn ein Sonderzeichen als gekennzeichnet wird. Um dies zu lösen, habe ich versucht, die Kodierung zu verwenden: ISO-8859-1
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("txtPath"),"ISO-8859-1"));
while ((line = br.readLine()) != null) {
}
Ich hoffe, das kann jedem helfen, der diesen Beitrag sieht.
Ok, ich bin definitiv zu spät zur Party, aber wenn Sie immer noch nach einer optimalen Lösung suchen, würde ich Folgendes verwenden (für Java 8)
Charset inputCharset = Charset.forName("ISO-8859-1");
Path pathToFile = ....
try (BufferedReader br = Files.newBufferedReader( pathToFile, inputCharset )) {
...
}