Кодировка из UTF-8 в CP866
От: digitalkol  
Дата: 23.03.13 21:17
Оценка:
Задача следующая:
Перекодировать строку из кодовой страницы 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();
}
}
}
Re: Кодировка из UTF-8 в CP866
От: Sergey Astakhov Россия  
Дата: 24.03.13 08:39
Оценка:
Здравствуйте, digitalkol, Вы писали:

D>Задача следующая:

D>Перекодировать строку из кодовой страницы UTF-8 в CP866. Ввод символов с клавиатуры.
D>Результат должен быть таким: ввод с клавиатуры символ Юникода и отображение этого символа в CP866 (пример "\u0021" = "!").
D>Не могу понять как это сделать.

Никак. Кодировки — это сущность на уровне байтов. А строки (String) в Java — это уже перекодированные символы в Unicode. Поэтому можно говорить о формировании массива байтов в какой-то кодировке, но никак не строки символов.
Re: Кодировка из UTF-8 в CP866
От: Blazkowicz Россия  
Дата: 24.03.13 10:02
Оценка:
Здравствуйте, digitalkol, Вы писали:

D>Перекодировать строку из кодовой страницы UTF-8 в CP866. Ввод символов с клавиатуры.

D>Результат должен быть таким: ввод с клавиатуры символ Юникода и отображение этого символа в CP866 (пример "\u0021" = "!").
D>Не могу понять как это сделать.
Когда нужна такая "перекодировка", то подобное решение это исключительно кривой костыль. Правильно — разобраться откуда возникает испорченая строка.
Re: Кодировка из UTF-8 в CP866
От: Аноним  
Дата: 26.03.13 07:09
Оценка:
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 в кодировку консоли и распечатала
Re: Вот это почитайте
От: Skipy Россия http://www.skipy.ru
Дата: 29.03.13 07:43
Оценка:
Здравствуйте, 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
С уважением,
Евгений aka Skipy
www.skipy.ru
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.