Freemarker encoding – question marks in the place of accented characters

I am trying to print accented characters with Freemarker, but in the place of accented characters, I get only question marks. I have verified, that following statement holds:

 "UTF-8" == Environment.getCurrentEnvironment().getConfiguration().getDefaultEncoding()

I can easily see, that the accented characters are correctly held in the variable before giving it to the template.

My freemarker context can be found here:

For instance instead of:

 Jedinečný živý koncert, kde nejen, že uslyšíte, ale i uvidíte splynutí metalové kapely s padesátičlenným orchestrem včetně.

I keep getting:

 Jedine?ný ?ivý koncert, kde nejen, ?e usly?íte, ale i uvidíte splynutí metalové kapely s padesáti?lenným orchestrem v?etn?.



FreeMarker always treats text as UNICODE, so it doesn’t generate question marks. Since the accented letters aren’t coming from the templates (if I understand it well), it must be your output encoding that’s improper. See also:

BTW, getDefaultEncoding() has no role in this. That influences the decoding used when you load the templates, but you are saying that the accented characters aren’t coming from the template file, also I don’t think you can get ?-s from decoding (unless, for invalid UTF-8 byte sequences). As of the encoding of the output, FreeMarker just uses a Writer (as opposed to an OutputStream), so it can’t influence that.

Leave a Reply

Your email address will not be published. Required fields are marked *