FreeMarker, кодирующий беспорядок

Когда я считал UTF-8 закодированный шаблон с FreeMarker, специальные символы представляются правильно в браузере, хотя freeMarkerConfig.getDefaultEncoding() возвраты "Cp1252". Если я установил freeMarkerConfig.setDefaultEncoding("UTF-8"), Я вижу только вопросительные знаки в браузере, хотя "UTF-8" является фактическим кодированием шаблонного файла. В каждом случае http заголовок "Тип контента: текст/HTML; charset=UTF-8" отправляется.

Какая-либо идея что не так?

7
задан deamon 8 August 2010 в 11:12
поделиться

2 ответа

Выходная кодировка - это кодировка вашего 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.

0
ответ дан 7 December 2019 в 14:26
поделиться

Что ж, это определенно выглядит так, независимо от того, что вы думаете, что ваш ввод закодирован в UTF-8, на самом деле он действительно закодирован в Cp1252. Можете ли вы перепроверить, т.е. шестнадцатеричным редактором. Я согласен с мнением Истао - попробуйте преобразовать файл шаблона в локальный файл и проверить результаты.

0
ответ дан 7 December 2019 в 14:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: