Monday 8 July 2019

java - Character Encoding not working for Japanese ,Chinese and Korean

I have Unicode characters for all the European countries and for a few Asian countries like Japan, China, Korean. All the Unicodes are working fine for European countries except for Japan, China, Korean.




Example for Japan:



dear_name=\u30c7\u30a3\u30fc\u30e9\u30fc


Example for China:



dear_name=\u4eb2\u7231\u7684



Example for Korean:



dear_name=\uce5c\uc560\ud558\ub294


Example for Sweden (this one is working fine):



dear_name=Till



Default character encoding is UTF-8.



Template template = VelocityFactory.getTemplate("test.vm", "UTF-8");
String messageText = VelocityFactory.merge(context, template, charset);


While debuging the merge method I found out that the merged result is getting grabled here itself for chinese,Japanese,korean.



public static String merge(VelocityContext context, Template template, String charset) throws Exception {


String newResult = null;

ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
OutputStreamWriter streamWriter;
if(charset != null && charset.length() > 0) {
streamWriter = new OutputStreamWriter(outputStream, charset);
} else {
streamWriter = new OutputStreamWriter(outputStream);
}


template.merge(context, streamWriter);
streamWriter.close();

mergedResult = outputStream.toString();
outputStream.close();

return newResult;
}
}



Below is the mail template and only for header it is displaying in correct format for Japanese, Chinese, and Korean, but not for the body:























$velocityUtils.getMessage("test")




$velocityUtils.getMessage("test1")









Any information how to fix this? How do i encode correctly??

No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...