Sunday, January 3, 2016

Jasper Localization From Property File:Encoding Issue

Recently In a Project I used Jasper to generate PDF forms.While doing this task I encountered a problem with Localization of Jasper Fields from Property Files.

Normally we include below attribute in JRXML header to point to localization files.

Localization files will be in same folder where JRXML is placed and localization files will be in below format.
  • etc
And each file will have key value pair like Date Date

and it will be used in JRXML in below format

and Localization is passed to JRXML in below format
 parameterMap.put(JRParameter.REPORT_LOCALE, new Locale("th"));
Encoding Issue:

When I generated the PDF for Thai language the output was a bunch of junk values.

The problem is resource bundle reads the property files in ASCII encoding even though property file is encoded in UTF-8


Remove the resourcebundle attribute from JRXML and configure it in Java class with UTF-8 Encoding.

  InputStream input = this.getClass().getClassLoader().getResourceAsStream("jasperreport_"+locale.getLanguage()+ ".properties");
  Reader reader = new InputStreamReader(input, "UTF-8");
  ResourceBundle resourceBundle = new PropertyResourceBundle(reader);
 catch (IOException  e1) 
  LOG.error("Error locating localize file ",e1);