Во-первых, getBytes()
возвращает байты строки в кодировке по умолчанию, обычно это UTF-16. Во-вторых, new String(bytes[], string)
интерпретирует байты как строку в предоставленной кодировке, а не конвертирует их. Итак:
new String(message.getBytes(), "UTF-8")
Пытаться прочитать строку UTF-16 как UTF-8, плохо. Затем:
new String(utfString.getBytes(), "WINDOWS-1251")
Попробуйте прочитать полученную строку как WINDOWS -1251, тоже плохо.
Я уверен, что на этом этапе ваша строка уничтожена .
Вы можете просто позвонить getBytes(Charset)
, чтобы получить байты вашей строки в нужной кодировке. Но в вашем случае вам даже не нужно этого делать, потому что ваш метод writeToFile (...) уже выполняет преобразование кодировки при записи в файл, поэтому вы можете просто дать ему исходный message
.