As @Joachim Sauer and @bmargulies indicated, without more details, we can't really tell you exactly what the problem is.
But to give you something to contrast your code with, the following will read a file provided as an argument and then read it char-by-char (i.e. it supports unicode characters), printing that character out as it goes. If this doesn't accomplish your goal, a specific (small) example of input that fails for you would be nice.
import java.io.*;
class printout {
public static void main (String[] args) {
if (args.length < 1) {
System.err.println ("Usage: printout <filename>");
System.exit (1);
}
File sourceFile = new File (args[0]);
FileReader fr = null;
try {
fr = new FileReader (sourceFile);
int inChar;
while ( (inChar = fr.read()) != -1 ) {
System.out.printf ("%c", inChar);
}
} catch (IOException e) {
System.err.printf ("Failure while reading %s: %s\n",
args[0], e.getMessage());
e.printStackTrace ();
} finally {
try {
if (fr != null) { fr.close (); }
} catch (IOException e) {
System.err.printf ("Error closing file reader: %s\n",
e.getMessage());
e.printStackTrace ();
}
}
}
}