java - FreeMarker编码困惑

标签 java character-encoding freemarker

当我使用 FreeMarker 读取 UTF-8 编码模板时,特殊字符在浏览器中正确呈现,尽管 freeMarkerConfig.getDefaultEncoding() 返回“Cp1252”。如果我设置 freeMarkerConfig.setDefaultEncoding("UTF-8"),我在浏览器中只会看到问号,尽管“UTF-8”是模板文件的实际编码。在每种情况下,都会发送 http header “Content-Type: text/html; charset=UTF-8”。

知道哪里出了问题吗?

最佳答案

将内容类型属性设置到 FreeMarkerViewResolver 中。

Spring 4.2 示例

@Bean
public FreeMarkerViewResolver freemarkerViewResolver() {
    FreeMarkerViewResolver resolver = new FreeMarkerViewResolver();
    resolver.setContentType("text/html; charset=utf-8");
    resolver.setCache(true);
    resolver.setPrefix("");
    resolver.setSuffix(".ftl.html");
    resolver.setRequestContextAttribute("rc");
    return resolver;
}

关于java - FreeMarker编码困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3434094/

相关文章:

java - 为什么当我收到 ActionMessage 时,我的表中的值会被删除?

java - 如何将 JDBC 驱动程序导入 Dynamic Web Project?

java - 带有 StringEntity 的 HttpPost 具有特殊字符,如 ®,看到 ¿½` 而不是 ®

java - Freemarker 设置 is 和 get 之间的调用优先级

java - 使用 Spring AOP 记录方法条目

java - 黑莓 - 开始 GPS 编码,应用程序找不到位置

magento - †即将在 Magento 的 ISO-8859-1 中代替常规的欧元符号

mysql - 我是否需要 utf8mb4 字符集来存储地理编码 address.components long_names?

java - Java HttpSession ID 对 FreeMarker 模板可见吗?

datetime - Freemarker 是否有与 JodaTime 的集成?