Ответ 1
Используйте OutputStreamWriter
:
pstream = new PrintWriter(new OutputStreamWriter(
csocket.getOutputStream(), StandardCharsets.UTF_8), true)
Как сделать PrintWriter
для записи UTF-8?
pstream = new PrintWriter(csocket.getOutputStream(), true);
String res = "some string";
pstream.println(res); // here I want to output string as UTF-8
Используйте OutputStreamWriter
:
pstream = new PrintWriter(new OutputStreamWriter(
csocket.getOutputStream(), StandardCharsets.UTF_8), true)
Не пользователь PrintWriter. Если вам нужна кодировка UTF-8, просто напишите прямо в OutputStream.
csocket.getOutputStream().write(res.getBytes("UTF-8"));
Посмотрите обсуждение Java: разница между PrintStream и PrintWriter.
Быть быстрым: вы можете использовать параметр -Dfile.encoding = utf8 JVM или метод, предложенный в обсуждении (см. второй ответ).
вы можете писать только в файл с любой кодировкой, иначе используемая кодировка платформы по умолчанию - doc
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);
}