我们正在使用Apache Velocity框架将电子邮件模板格式存储在.vm文件中。这些电子邮件具有中文字符内容。在Java中检索并显示为String时,中文字符将成为问号。
我们使用此代码将内容提取为字符串
VelocityEngine engine = new VelocityEngine();
engine.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath");
engine.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName());
engine.init();
VelocityContext context = new VelocityContext();
context.put("params", params);
StringWriter writer = new StringWriter();
Template template = engine.getTemplate("testfile.vm","UTF-8");
template.merge(context, writer);
String message = writer.toString();
System.out.println(message);
如果我们想在System.out中看到实际的中文字符怎么办?
PS:这与其他线程不同,因为下面的行对我不起作用。
Template template = Velocity.getTemplate("testfile.vm", "UTF-8");
尽管添加了“UTF-8”
,但在打印时仍会将问号转为问号