Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java ME (J2ME) > Перекодировка


Автор: X-Vlad 21.5.2010, 13:36
Всем привет,

Начинаю изучать Java ME. 
Мне нужно стянуть информацию с заданого урла и показать на экране. 
Информацию стягиваю но на мобиле и эмуле отображаются крякозяблы smile
Проблема с русскими буквами.

Помогите плз. 

"http://localhost/project1.exe/getnames" возвращает "Иванов;Сидоров;Петров..."

Код

  HttpConnection connection = null;
                InputStream inputstream = null;
                String result = "";

                try { 
                    connection = (HttpConnection) Connector.open("http://localhost/project1.exe/getnames");
                    //HTTP Request
                    connection.setRequestMethod(HttpConnection.GET);
                    connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
                    connection.setRequestProperty("Connection", "close");

                    if (connection.getResponseCode() == HttpConnection.HTTP_OK) {
                        inputstream = connection.openInputStream();
                        int length = (int) connection.getLength();
                        if (length != -1) {
                            byte incomingData[] = new byte[length];
                            inputstream.read(incomingData);
                            result = new String(incomingData);
                            ParseResult(result, ";");
                        } else {
                            ByteArrayOutputStream bytestream = new ByteArrayOutputStream();
                            int ch;
                            while ((ch = inputstream.read()) != -1) {
                                bytestream.write(ch);
                            }
                            result = new String(bytestream.toByteArray());
                            bytestream.close();
                            ParseResult(result, ";");
                        }
                        System.out.println(result);
                    }
                }
                catch(IOException error) {
                    System.out.println("Caught IOException: " + error.toString());
                    }

Автор: ivanovpv 21.5.2010, 13:53
Проблема здесь:
Код

 result = new String(incomingData);


Такой конструктор для перекодировки строки из массива байтов берет текущую локаль телефона. Надо подставить ту локаль которая использовалась при начальной перекодировке строки в массив байтов: 
Код

 result = new String(incomingData, charset);

Автор: X-Vlad 21.5.2010, 14:08
Спасибо. smile

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