Better string decoding using BufferedReader.read(char[])