Часть для чтения выглядит правильно, я все время использую это в Linux.
Я подозреваю, что вы использовали кодировку по умолчанию где-то при экспорте текста на веб-страницу. Из-за разной кодировки по умолчанию в Linux и Windows вы увидели другой результат.
Например, вы используете кодировку по умолчанию, если вы делаете что-то подобное в сервлете,
PrintWriter out = response.getWriter();
out.println(text);
Вам нужно специально написать в UTF-8, как это,
response.setContentType("text/html; charset=UTF-8");
out = new PrintWriter(
new OutputStreamWriter(response.getOutputStream(), "UTF-8"), true);
out.println(text);