Когда я считал UTF-8 закодированный шаблон с FreeMarker, специальные символы представляются правильно в браузере, хотя freeMarkerConfig.getDefaultEncoding()
возвраты "Cp1252". Если я установил freeMarkerConfig.setDefaultEncoding("UTF-8")
, Я вижу только вопросительные знаки в браузере, хотя "UTF-8" является фактическим кодированием шаблонного файла. В каждом случае http заголовок "Тип контента: текст/HTML; charset=UTF-8" отправляется.
Какая-либо идея что не так?
Выходная кодировка - это кодировка вашего java-механизма. Если вы создадите выходной файл с UTF-FOO, и передадите этот выходной файл для генерации freemarker, выходная кодировка будет UTF-FOO.
См. Проблемы с наборами символов.
С экз. кода :
Template templévénmts;
BufferedWriter writ;
OutputStreamWriter encodé;
encodé = new OutputStreamWriter(
new FileOutputStream(new File(f_dirDestination, résultat)), "UTF-8");
writ = new BufferedWriter(
encodé);
templévénmts = f_freemarker.getTemplate(modèle);
templévénmts.process(f_rootDatas, writ);
writ.close();
Вы также можете использовать FileWriterWithEncoding в commons io.
Что ж, это определенно выглядит так, независимо от того, что вы думаете, что ваш ввод закодирован в UTF-8, на самом деле он действительно закодирован в Cp1252. Можете ли вы перепроверить, т.е. шестнадцатеричным редактором. Я согласен с мнением Истао - попробуйте преобразовать файл шаблона в локальный файл и проверить результаты.