Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Reading UTF8 strings from a server through http using MIDP

Tags:

java

java-me

midp

I want to read UTF-8 strings from a server that I have control of, using java MIDP. My server is sending UTF-8 data. The following code gets close:

        c = (StreamConnection) Connector.open(
             myServer, Connector.READ_WRITE);
        InputStream is = c.openInputStream();
        StringBuffer sb = new StringBuffer();
        int ch;
        while((ch = is.read()) != -1)
            sb.append((char)ch + "->" + ch + "\n");

I print the char and its code to debugging purposes. I think it is reading ASCII chars here, so, when I have some char that has its code above 127 then I get two chars, like the two examples bellow:

letter á. UTF code E1 (hex). I get 195 and then 161

letter ô. UTF code F4 (hex). I get 195 and then 180

My question is, is there a way for me to read UTF characters directly. I've found some solutions in the web but none fits to the MIDP.

like image 922
Ricardo Acras Avatar asked Jul 08 '09 02:07

Ricardo Acras


1 Answers

Instead of reading bytes, read characters. Use an InputStreamReader API to convert bytes to characters and run through the UTF-8 encoder. It should be supported as part of the JavaME CLDC (JSR 30) profile; that's where the link points.

Try something like this:

c = (StreamConnection) Connector.open(
         myServer, Connector.READ_WRITE);
Reader r = new InputStreamReader(c.openInputStream(), "UTF-8");
StringBuffer sb = new StringBuffer();
int ch;
while((ch = r.read()) != -1)
    sb.append((char)ch + "->" + ch + "\n");
like image 171
lavinio Avatar answered Sep 19 '22 15:09

lavinio