Java: преобразовать строку UTF8 в байтовый массив в другой кодировке

У меня есть строка в кодировке UTF8, но мне нужно опубликовать параметры в процессе выполнения в cp1251. Как я могу декодировать String или байтовый массив?

Мне нужно что-то вроде:bytesInCp1251 = encodeTo(stringInUtf8, "cp1251");


Спасибо всем! Это мое собственное решение:

OutputStreamWriter writer = new OutputStreamWriter(out, "cp1251");
writer.write(s);

4 ответа

Решение

В Java нет такого понятия, как "строка в кодировке UTF8". Строки Java используют UTF-16 для внутреннего использования, но должны рассматриваться как абстракция без определенной кодировки. Если у вас есть строка, она уже расшифрована. Если вы хотите закодировать это, используйте string.getBytes(encoding), Если исходными данными являются UTF-8, вы должны учитывать это при преобразовании этих данных из байтов в строку.

byte[] bytesInCp1251 = stringInUtf8.getBytes("cp1251");

Это решение!

OutputStreamWriter writer = new OutputStreamWriter(out, "cp1251");
writer.write(s);

Почему бы не сделать что-то подобное (при условии stringInUtf8 такое строка UTF-8)?

String cp1251Str = new String(stringInUtf8.getBytes("UTF-8"), "cp1251");
Другие вопросы по тегам