Как сделать PrintWriter
написать UTF-8?Как заставить 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
Как сделать PrintWriter
написать UTF-8?Как заставить 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)
Посмотрите на Java: Difference between PrintStream and 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);
}
Не пользователь PrintWriter. Если вам нужна кодировка UTF-8, просто напишите прямо в OutputStream.
csocket.getOutputStream().write(res.getBytes("UTF-8"));
вопрос не имеет отношения к андроиду. –