Задача следующая:
Перекодировать строку из кодовой страницы UTF-8 в CP866. Ввод символов с клавиатуры.
Результат должен быть таким: ввод с клавиатуры символ Юникода и отображение этого символа в CP866 (пример "\u0021" = "!").
Не могу понять как это сделать.
import java.io.UnsupportedEncodingException;
import java.util.Scanner;
public class Encode {
public static void main (String[] args) {
Scanner a = new Scanner (System.in);
String c = a.next();
String b;
try {
b = new String (c.getBytes("UTF-8"),"CP866");
System.out.println(b);
}
catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
Здравствуйте, digitalkol, Вы писали:
D>Задача следующая:
D>Перекодировать строку из кодовой страницы UTF-8 в CP866. Ввод символов с клавиатуры.
D>Результат должен быть таким: ввод с клавиатуры символ Юникода и отображение этого символа в CP866 (пример "\u0021" = "!").
D>Не могу понять как это сделать.
Никак. Кодировки — это сущность на уровне байтов. А строки (String) в Java — это уже перекодированные символы в Unicode. Поэтому можно говорить о формировании массива байтов в какой-то кодировке, но никак не строки символов.
Здравствуйте, digitalkol, Вы писали:
D>Перекодировать строку из кодовой страницы UTF-8 в CP866. Ввод символов с клавиатуры.
D>Результат должен быть таким: ввод с клавиатуры символ Юникода и отображение этого символа в CP866 (пример "\u0021" = "!").
D>Не могу понять как это сделать. 
Когда нужна такая "перекодировка", то подобное решение это исключительно кривой костыль. Правильно — разобраться откуда возникает испорченая строка.
D>Scanner a = new Scanner (System.in);
D>System.out.println(b);
Я чего-то не понял, ты всерьёз в одной консольке рассчитывал увидеть символы в разных кодировках?
Ну и про твой способ перекодирования
String c = a.next(); // из кодировки консоли Ява за сценой сконвертировала в UTF-16
c.getBytes("UTF-8") // взяли байтовое представление в кодировке "UTF-8"
new String (...,"CP866") // сказали Яве, что предудущее байтовое представление на самом деле CP866 (никакой перекодировки тут, естественно, не произошло)
b = new String (...); // Ява распарсила массив байт как будто это была кодировка CP866 и сконвертировала в UTF-16
System.out.println(b); // Ява сконвертировала UTF-16 в кодировку консоли и распечатала
Здравствуйте, digitalkol, Вы писали:
D>Задача следующая:
D>Перекодировать строку из кодовой страницы UTF-8 в CP866. Ввод символов с клавиатуры.
D>Результат должен быть таким: ввод с клавиатуры символ Юникода и отображение этого символа в CP866 (пример "\u0021" = "!").
D>Не могу понять как это сделать.
О кодировках вообще:
http://www.skipy.ru/technics/encodings.html
О вводе/выводе и консоли:
http://www.skipy.ru/technics/encodings_console_comp.html