Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > encode UTF-8


Автор: tepkuh 21.5.2009, 10:28
Абсолютно глупый ИМХО вопрос, но чего то он у меня не получается)
Читаю из файла строку
Код

RandomAccessFile raf = new RandomAccessFile(keyword_f, "r");
String keyword = raf.readLine();

Файл у меня в кодировке UTF-8.
Так вот, надо Стринговую переменную keyword запихать в byte array. Чтобы я потом этот byte array переделал в Windows-1251.
Как сделать ума не приложу 

Автор: ecologist 21.5.2009, 10:34
String.getBytes(...) ?

Автор: tepkuh 21.5.2009, 10:53
Цитата(ecologist @  21.5.2009,  10:34 Найти цитируемый пост)
String.getBytes(...) ? 

эхх...если бы все было так просто... У меня "как бы" уже в keyword как бы "байты") только они стрингового типа) 

Вот например возьмем, файл  в кодировке Windows-1251, он содержит одну строку "1тест". Если на файл посмотреть в HEX редакторе она выглядит как 49 242 229 241 242(в десятичной системе) 
Вообем читаем этот файл с одной строкой в keyword и делаем keyword.getBytes() 
В результате получаем в массиве 49 63 63 63 63.

Добавлено через 9 минут и 23 секунды
Сделал вот так
byte mas1[]=keyword.getByte();
byte mas2[] = keyword.geByte("Windows-1251");
byte mas3[] = keyword.getByte("UTF-8");
byte mas4[] = keyword.getByte("ISO-8859-1");

Везде короче не мой текст, а либо вопросы одни либо кракозябры либо еще какая фигня. 

Автор: tepkuh 21.5.2009, 11:54
Ничего лучше кроме такой вот фихни придумать не получается(
Код

File keyword_f = new File(path+"keyword.txt");
RandomAccessFile raf = new RandomAccessFile(keyword_f, "r");
String keyword = raf.readLine(); //читаем одну строку
byte[] inDataBytes = new byte[keyword.length()]; //Тут будем хранить уже правильный массив байтов
for(int i=0; i<keyword.length();i=i+1)
            {
                int a = keyword.charAt(i);
                inDataBytes[i] = (byte)a;
            }
keyword = new String(inDataBytes,"UTF-8"); //Если файл был в УТФ-8


Автор: math64 21.5.2009, 13:54
А тебе обязательно нужен RandomAccessFile? Открой InputStreamReader с указанием правильной кодировки.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)