Проблемы кодирования с Apache Velocity включают

У меня есть файл скорости/html. Я пытаюсь включить/разобрать простой HTML на страницу.

Если я просто скопирую текст прямо в основной файл, он отлично работает:

Миранда Керр уже давно не является ангелом Victoria’s Secret.

Если я создам отдельный файл виртуальной машины и включу его так:

#parse("topicoftheday/homepagenews.vm")

Я получаю плохой характер мусора:

Миранда Керр никогда не была ангелом Victoria's Secret.

Как? Почему?

Спасибо


person Nathan H    schedule 24.11.2009    source источник


Ответы (1)


Похоже, вы использовали 3 кодировки,

  1. Файл виртуальной машины в UTF-8.
  2. Скорость на латыни-1.
  3. Терминал/JVM в ANSI.

Вы используете апостроф U+2019, отличный от ASCII. Последовательность UTF-8 - E2 80 19, это 3 символа, которые вы видите в Latin-1, отображаемые как ANSI.

Вам нужно изменить их все на UTF-8, потому что в Latin-1/ANSI нет этого символа. Или вы должны использовать апостроф ASCII '.

Для скорости установите этот параметр,

input.encoding = UTF-8
person ZZ Coder    schedule 25.11.2009
comment
Контент поступает из внешнего RSS-канала, поэтому я не могу изменить апостроф. Но я рассматриваю возможность изменения параметров... - person Nathan H; 25.11.2009
comment
Спасибо за параметр input.encoding - person Aleksey Otrubennikov; 10.06.2012
comment
Где мы устанавливаем этот параметр? - person acdcjunior; 19.03.2014
comment
@acdcjunior Например, можно передать свойства в конструктор VelocityEngine: private final Properties velocityEngineProperties = new Properties() {{ put("input.encoding", CharEncoding.UTF_8); }}; private final VelocityEngine velocityEngine = new VelocityEngine(velocityEngineProperties); - person XZen; 22.12.2014