2012-05-16 2 views
0
05-16 14:29:16.935: W/System.err(20981): java.lang.NumberFormatException: 
    unable to parse '��������������������' as integer 

Это довольно много сообщение об ошибке мой Android приложение показывает, когда он должен получить 10-байтовый длинную строку (которая показана в 20 различных байтов в сообщении об ошибке.Почему моя строка не перемещается правильно через розетки?

BufferedReader in = new BufferedReader(
     new InputStreamReader(client.getInputStream(), "UTF-8")); 
BufferedWriter out = new BufferedWriter(
     new OutputStreamWriter(socket.getOutputStream(), "UTF-8")); 

^^ I добавлено UTF-8.

String count = String.format("%10s", 
     (new Integer(result.length())).toString()).replace(" ", "0"); 

Это, как я получить строку, которую я посылаю, и это работает прекрасно, как это показывает правильно на бревне стороны ПК.

Однако на стороне Android это не получено правильно.

BufferedReader in = new BufferedReader(
     new InputStreamReader(client.getInputStream(), "UTF-8")); 
CharBuffer buf = CharBuffer.allocate(1024*1024); 
in.read(buf); 
char[] buffer = new char[10]; 
buf.get(buffer, 0, 10); 
cont = Integer.parseInt(new String(buffer)); 

Вот как я возвращаю строку, и она работает некорректно. Может ли кто-нибудь с большим опытом помочь мне понять, почему это не работает?

+0

Вы кодируете и декодируете строку с использованием того же набора символов с обеих сторон? – mcfinnigan

+0

Может быть, проблема с кодировкой? –

+0

Я не уверен, я ничего не редактировал, связанный с кодировками с обеих сторон. – Bogdacutu

ответ

3

Java String - это Юникод, 2 байта на события с символами. Это хорошо знать.

Вероятно, вы должны сообщить потокам, как закодированы строки. UTF-8 - моя рекомендация.

Я бы порекомендовал вам немного забыть о бите синтаксического анализа числа и просто посмотреть, можете ли вы понять, что отправляется туда и обратно. Исключение с нечитаемыми символами не полезно.

Уменьшите свою проблему до простой отправки и получения и войдите в то, что получено. Видимость и прозрачность - ваши друзья здесь. Трудно понять, что требуется, пока вы не узнаете, что получаете.

+0

Как мне это сделать? Я использую BufferedWriter и BufferedReader для связи. – Bogdacutu

+0

Укажите кодировку в конструкторе ...? В качестве альтернативы вы можете просто отправить байт [], который является необязательным хешем строки, тогда противоположной стороне не нужно беспокоиться, а кодировка играет меньше роли ... – Jay

+0

Я добавил UTF-8, тот же результат. :( – Bogdacutu

Смежные вопросы