J'ai des problèmes pour lire un fichier texte avec le codage utf-8 J'utilise Java avec la plate-forme Netbeans 7.2.1
J'ai déjà configuré le projet Java pour gérer UTF-8 Javaproject ==> clic droit ==> propriétés ==> source ==> UTF-8
mais toujours obtenir le caractère de sortie inconnu:
le 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);
}
d'autres idées?
merci
Utilisation
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());
}
}
}
Vous devez mettre UTF-8 entre guillemets
Vous lisez le fichier correctement, mais le problème semble être lié au codage par défaut de System.out
. Essayez ceci pour imprimer le UTF-8
string-
PrintStream out = new PrintStream(System.out, true, "UTF-8");
out.println(str);
Vous devez spécifier le codage de InputStreamReader en utilisant le paramètre Charset .
Charset inputCharset = Charset.forName("ISO-8859-1");
InputStreamReader isr = new InputStreamReader(fis, inputCharset));
C'est un travail pour moi. J'espère vous aider.
J'ai rencontré le même problème chaque fois qu'il trouve un caractère spécial le marque comme. pour résoudre ce problème, j'ai essayé d'utiliser l'encodage ISO-8859-1.
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("txtPath"),"ISO-8859-1"));
while ((line = br.readLine()) != null) {
}
J'espère que cela peut aider tous ceux qui voient ce post.
Ok, je suis vraiment en retard pour la soirée, mais si vous êtes toujours à la recherche d’une solution optimale, j’utiliserais la solution suivante (pour Java 8)
Charset inputCharset = Charset.forName("ISO-8859-1");
Path pathToFile = ....
try (BufferedReader br = Files.newBufferedReader( pathToFile, inputCharset )) {
...
}