web-dev-qa-db-fra.com

Comment faire le PrintWriter pour écrire UTF-8?

Comment faire le PrintWriter pour écrire UTF-8?

pstream = new PrintWriter(csocket.getOutputStream(), true);
String res = "some string";
pstream.println(res); // here I want to output string as UTF-8
40
yeah its me

Utilisez un OutputStreamWriter:

pstream = new PrintWriter(new OutputStreamWriter(
    csocket.getOutputStream(), StandardCharsets.UTF_8), true)
46
Njol

Regardez Java: différence entre PrintStream et PrintWriter discussion.

Pour être rapide: vous pouvez utiliser -Dfile.encoding = utf8 paramètre ou méthode JVM suggéré dans la discussion (voir la deuxième réponse).

2
Daniil

N'utilisez pas PrintWriter. Si vous avez besoin d'un encodage UTF-8, écrivez simplement directement dans OutputStream.

csocket.getOutputStream().write(res.getBytes("UTF-8"));
2
dave110022
PrintWriter out1 = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KitKat) {
    out1 = new PrintWriter(new OutputStreamWriter(socket.getOutputStream(), StandardCharsets.UTF_8),true);
} else { 
    out1 = new PrintWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF8"), true);
}
1
Shahab Saalami

vous pouvez uniquement écrire dans un fichier avec n'importe quel jeu de caractères, sinon le jeu de caractères par défaut de la plate-forme est utilisé voir doc

0
Error