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, вы должны учитывать это при преобразовании этих данных из байтов в строку.
Это решение!
OutputStreamWriter writer = new OutputStreamWriter(out, "cp1251");
writer.write(s);
Почему бы не сделать что-то подобное (при условии stringInUtf8
такое строка UTF-8)?
String cp1251Str = new String(stringInUtf8.getBytes("UTF-8"), "cp1251");