Java: преобразовать строку UTF8 в байтовый массив в другой кодировке - PullRequest
5 голосов
/ 26 октября 2010

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

Мне нужно что-то вроде:Это мое собственное решение:

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

Ответы [ 4 ]

9 голосов
/ 26 октября 2010

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

5 голосов
/ 26 октября 2010
byte[] bytesInCp1251 = stringInUtf8.getBytes("cp1251");
1 голос
/ 26 октября 2010

Это решение!

OutputStreamWriter writer = new OutputStreamWriter(out, "cp1251");
writer.write(s);
0 голосов
/ 26 октября 2010

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

String cp1251Str = new String(stringInUtf8.getBytes("UTF-8"), "cp1251");
...