When reading character by character using UTF-8, SimpleStreamReader returns -1 (EOF) when it encounters an emoticon. The problem exists even when reading a lot of characters at once but is harder to reproduce (the four bytes of the emoticon must get misaligned with the buffer).