J'essaie de lire un text/plain
fichier sur Internet, ligne par ligne. Le code que j'ai en ce moment est:
URL url = new URL("http://kuehldesign.net/test.txt");
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
LinkedList<String> lines = new LinkedList();
String readLine;
while ((readLine = in.readLine()) != null) {
lines.add(readLine);
}
for (String line : lines) {
out.println("> " + line);
}
Le fichier,, test.txt
contient ¡Hélló!
, que j'utilise pour tester l'encodage.
Quand j'examine le OutputStream
( out
), je le vois comme > ¡Hélló!
. Je ne crois pas que ce soit un problème avec le OutputStream
car je peux me passer de out.println("é");
problèmes.
Des idées pour lire le formulaire InputStream
comme UTF-8? Merci!
java
utf-8
inputstream
Chris Kuehl
la source
la source
text/plain
fichier, malheureusement, et il n'utilise pas d'encodage UTF-8. Je n'étais pas au courant de bonnes bibliothèques réseau; Aucune suggestion?Réponses:
J'ai résolu mon propre problème. Cette ligne:
doit être:
ou depuis Java 7:
la source
CharsetDecoder dec
argument. C'est le même bogue de conception Java que lesOutputStreamWriter
constructeurs ont: un seul des quatre condescend à vous dire quand quelque chose ne va pas.CharsetDecoder dec
Là encore, vous devez utiliser l' argument sophistiqué . La seule chose sûre et sensée à faire est de considérer tous les autres constructeurs comme obsolètes, car on ne peut pas leur faire confiance pour leur comportement.StandardCharsets.UTF_8
Essaye ça,.. :-)
la source
J'ai rencontré le même problème chaque fois qu'il trouve qu'un caractère spécial le marque comme . pour résoudre cela, j'ai essayé d'utiliser l'encodage: ISO-8859-1
J'espère que cela peut aider tous ceux qui voient ce message.
la source