[JavaME] - problem z kodowaniem

Odpowiedz Nowy wątek
2010-08-05 12:16
0

mam aplikację która łączy się z danym adresem url a konkretnie z plikiem php który tam jest. plik zwraca dane i tu wszystko fajnie działa.

problem z kodowaniem bo przy polskich znakach mam krzaki.

    public void connect(String url) {
            HttpConnection c = null;
            InputStream is = null;
            StringBuffer b = new StringBuffer();
            StringTools st = new StringTools(";");
            try {
                c = (HttpConnection)Connector.open(url);
                is = c.openDataInputStream();
                int ch;
                while((ch = is.read()) != -1) {
                    b.append((char) ch);
                }
            } catch(Exception ex) {}

            int count = 0;

            if(url.equals("http://jakasstrona.pl/index.php?id=mobilecontent&no_cache=1"))
                count = st.split(b.toString()).length;

            System.out.println(count);

            if(count > 0) {
                String[] test = new String[count];
                test = st.split(b.toString());
                list = new List("lista", List.IMPLICIT);
                for(int i = 0; i < count; i++) {
                    list.append(test[i], null);
                }
                list.addCommand(CMD_OK);
                list.addCommand(CMD_EXIT);
            } else {
                list = new List("lista", List.IMPLICIT);
                String test = b.toString();
                list.append(test, null);
                list.addCommand(CMD_BACK);
//              String test = b.toString();
//              list.append(test, null);
            }

            list.setCommandListener(this);
            mDisplay.setCurrent(list);
    }

}

jak to przerobić ?

czytałem o readUTF obiektu DataInputStream, ale nic mi nie zwraca

Pozostało 580 znaków

2010-08-05 15:35
0

próbowałem jeszcze takiego motywu

HttpConnection connection = null;
        InputStream inputStream = null;
        DataInputStream dis = null;
        String response = "";
        StringTools st = new StringTools(";");

        try {
            connection = (HttpConnection) Connector.open(url);
            inputStream = connection.openInputStream();
            dis = new DataInputStream(inputStream);
            response = dis.readUTF();
        } catch(Exception ex) {
            ex.printStackTrace();
        }
        System.out.println(response.toString());

otrzymuje

java.io.EOFException
at java.io.DataInputStream.readFully(+48)
at java.io.DataInputStream.readUTF(+30)
at java.io.DataInputStream.readUTF(+4)
at core.T3Connector.connect(+55)
at core.T3Connector$1.run(+14)

Pozostało 580 znaków

2010-08-05 16:32
0

A próbowałeś bez pakietów a po prostu zrobić stringa z tego co przyjdzie?

indata = new DataInputStream(new BufferedInputStream(connection.openInputStream());

String aaa = indata.readUTF();

?


Another jam from the world for the jam from the voices of the world......

Pozostało 580 znaków

2010-08-05 22:22
0

o ile się nie mylę to BufferedInputStream nie występuje w pakiecie CLDC a tylko CDC

Pozostało 580 znaków

2010-08-05 23:06
0
HttpConnection connection = null;
        InputStream inputStream = null;
        StringBuffer stringBuffer = null;
        StringTools st = new StringTools(";");
        try {
            int code;
            connection = (HttpConnection)Connector.open(url);
            inputStream = connection.openInputStream();
            stringBuffer = new StringBuffer();
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
            int total = 0;
            int read = 0;
            while((read = inputStreamReader.read()) >= 0) {
                total++;
                stringBuffer.append((char) read);
            }
        } catch(Exception ex) {
            ex.printStackTrace();
        }

tak wygląda rozwiązanie problemu :)

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0