String comment = new String(cmntbox.getBytes("UTF-16LE"),"UTF-8");
почти наверняка неправильно. Строка, которую вы получаете из Utility.getCommentPage
, должна содержать символы, которые вы хотите. Преобразование этих символов в байты с использованием одной кодировки, а затем преобразование байтов обратно в символы с другой кодировкой приведет к тому, что вы видите.
В частности, каждый второй байт в кодировке UTF-16 для типичного HTML равен нулю. И ноль - это совершенно правильный байт, который кодируется в один символ NUL в UTF-8. IE может подумать: «Очевидно, что это неправильно, поэтому я постараюсь быть полезным и делать то, что, как я думаю, вы имели в виду»; в то время как Firefox просто показывает, что вы сказали, что хотели.
Что произойдет, если вы пропустите конвертацию и просто выполните
pw.write(cmntbox);
напрямую? Вы уже сделали response.setContentType
с charset=
до того, как сделали response.getWriter
. Когда вы затем write
String, он должен сделать кодировку символов для вас.