问题
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.
回答1:
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");
来源:https://stackoverflow.com/questions/1095902/reading-utf8-strings-from-a-server-through-http-using-midp