Вы пытались написать спецификацию в начале файла? Спецификация - единственное, что может сказать редактору, что файл находится в UTF-8. В противном случае файл UTF-8 может выглядеть просто как Latin-1 или расширенный ANSI.
Вы можете сделать это так,
public final static byte[] UTF8_BOM = {(byte)0xEF, (byte)0xBB, (byte)0xBF};
...
OutputStream os = new FileOutputStream(file);
os.write(UTF8_BOM);
os.flush();
OutputStreamWriter out = new OutputStreamWriter(os, "UTF8");
try
{
out.write(text);
out.flush();
} finally
{
out.close();
}