steve steve - 1 month ago 13x
Java Question

Velocity templates seem to fail with UTF-8

I have been trying to use a velocity Template with the following content:

Sübjäct $item

Everything works fine except the translation of the two Unicode characters. The result string printed on the command line looks like:

Sübjäct foo

I searched the velocity website and the web for this issue, and came up with different font encoding options, which I added to my code. But these don't help. This is the actual code:

velocity.setProperty("file.resource.loader.path", absPath);
velocity.setProperty("input.encoding", "UTF-8");
velocity.setProperty("output.encoding", "UTF-8");

Template t = velocity.getTemplate("subject.vm");

StringWriter sw = new StringWriter();

t.merge(null, sw);

How an I fix this issue?


Have you tried using:

Template template = Velocity.getTemplate("subject.vm", "UTF-8");

? That looks like it should do the right thing.