I was just about to put a similar post up myself. Do the "junk" characters look anything like this:
(though on the actual phone the '?' is more like a rectangular box)
I was under the impression that the Java enabled phones display UTF-8. The text that I am reading in is definitely UTF-8 and displays correctly in all the emulators. It is only when I run the application on the phone that I get these junk characters.
If someone could help that would be really appreciated as I too am trying to figure out the same problem.
I would guess that you are reading UTF-8, but the phone is displaying unicode - they're not the same thing. Unicode uses 16 bits per character. UTF-8 encodes unicode into 8 bit bytes, using one, two or three bytes per character.
You are converting bytes read from the network stream into one character each. This works fine for characters 0 to 127, which are encoded in UTF-8 as one byte. But other characters are encoded in multi-byte formats, so appear as a sequence of two or three incorrect characters.
You may be able to get the String object to translate bytes correctly, if the device supports UTF-8 encoding. (I would guess it is translating from ISO-8859-1 by default). Otherwise, you can find a description of UTF-8 in the API documentation under java.io.DataInput.readUTF().
You might also want to check what encoding you are receiving, by looking at the charset tag in the content-type header field.