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


Автор: Invisible 19.3.2008, 22:19
Уже час копаюсь на форуме и не могу найти того что мне надо ... =( 
Записываю символы в файл, потом пытаюсь их считывать, не получается считывать записанные русские символы. При чтениее получаю код (int) ... потом при переводу его в byte и выводе получаю 0 , проблема в кодировке поля ? 

Код

DataOutputStream dataOut = new DataOutputStream(new FileOutputStream("tempfile.txt"));
   System.out.println("Playfair:");
   String passphrase = "расдваpassword&^%$##@";
   byte passbytes[] = passphrase.getBytes("utf-8");
   dataOut.writeBytes(passphrase);

   DataInputStream dataIn = new DataInputStream(new FileInputStream("tempfile.txt"));
   int FileLength = dataIn.available();
   int[] store = new int[FileLength];
   for(int counter = 0; counter < FileLength; counter++) {
      store[counter] = dataIn.read();
   }

   DataOutputStream dataOut2 = new DataOutputStream(new FileOutputStream("tempfile2.txt"));
   dataOut2.writeByte((byte)store[1]);

Автор: teg 19.3.2008, 22:44
из кода не видно, где Вы пытаетесь считать байты. Записано в файл правильно (только флаша не вижу), а вот чтение - совсем не то, причём от и до. 

Если уж обязательно работать с байтами (а это совсем не обязательно), то нужно примерно так:
Код

byte store[] = new byte[200];
int n = 0;
while (true) {
    int b = dataIn.read();
    if (b < 0) {
         break;
    }
    store[n] = (byte) b;
}
String s = new String(store, "UTF-8");

Автор: Invisible 19.3.2008, 23:26
Спасибо , попробовал как ты написал, русский не распознаётся всёравно =) а так работает 
Что делать с русским не знаю =( допустим 
"тест" отображается и пишется в файл как "B5AB"

Автор: Invisible 19.3.2008, 23:44
проблема решилась .. использовал 
dataOut.writeUTF(passphrase);

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