Здесь вы используете кодировку символов по умолчанию для вашей системы:
Writer out = new BufferedWriter(new OutputStreamWriter(conn.getOutputStream()));
Вместо этого укажите явно кодировку в вызове конструктора для OutputStreamWriter
:
Writer out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
(Вам не нужно BufferedWriter
здесь - это не приносит вам пользы.)
РЕДАКТИРОВАТЬ: Хорошо, теперь у вас есть проблема, потому что вы устанавливаете длину контента неправильно. Вам следует преобразовать текст в двоичный файл один раз , например:
byte[] data = params.getBytes("UTF-8");
conn.setFixedLengthStreamingMode(data.length);
...
OutputStream output = conn.getOutputStream();
// Note: you should use a finally block here
output.write(data);