freemarker页面中文乱码

一、前言

简单的记录freemarker遇到的错误问题:ftl页面中文乱码

由于freemarker整合在ssm框架中,所以笔者直接贴配置代码

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">

     <!-- 注册spring的默认server,来出来静态资源 -->
    <mvc:default-servlet-handler/>
    <!-- 注册一些bean,只要用途就是处理请求的映射和调用 -->
    <mvc:annotation-driven/>
    <!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 -->
    <context:component-scan base-package="com.ys.controller" />
    <!-- 添加注解驱动 -->
    <mvc:annotation-driven enable-matrix-variables="true" />
    <!-- 扩充了注解驱动,可以将请求参数绑定到控制器参数 -->
    <!-- 静态资源处理  css js imgs -->
   <!--  <mvc:resources location="/resources/**" mapping="/resources" />
    <mvc:resources location="/back_css/" mapping="back_css/**" />
    <mvc:resources location="/back_js/" mapping="/back_js/**" />
    <mvc:resources location="/back_img/" mapping="/back_img/**" />
    <mvc:resources location="/skin/" mapping="/skin/**" /> -->

    <!-- 告诉Spring 来扫描指定包下的类,并注册被@Component,@Controller,@Service,@Repository等注解标记的组件 -->
    <context:component-scan base-package="com.ys.controller"  use-default-filters="false">
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>
    <!--避免IE执行AJAX时,返回JSON出现下载文件 -->
    <bean id="mappingJacksonHttpMessageConverter"
        class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
        <property name="supportedMediaTypes">
            <list>
                <value>text/html;charset=UTF-8</value>
            </list>
        </property>
    </bean>
    <!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 -->
    <bean
        class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="messageConverters">
            <list>
                <ref bean="mappingJacksonHttpMessageConverter" /> <!-- JSON转换器 -->
            </list>
        </property>
    </bean>  

    <!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 -->
    <bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 默认编码 -->
        <property name="defaultEncoding" value="utf-8" />
        <!-- 文件大小最大值 -->
        <property name="maxUploadSize" value="10485760000" />
        <!-- 内存中的最大值 -->
        <property name="maxInMemorySize" value="40960" />
        <!-- 启用是为了推迟文件解析,以便捕获文件大小异常 -->
        <property name="resolveLazily" value="true"/>
    </bean>   

    <!-- 配置ViewResolver 。可用多个ViewResolver 。使用order属性排序。   InternalResourceViewResolver 放在最后-->
    <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
    <property name="order" value="1"></property>
        <property name="mediaTypes">
            <map>
                <!-- 告诉视图解析器,返回的类型为json格式 -->
                <entry key="json" value="application/json" />
                <entry key="xml" value="application/xml" />
                <entry key="htm" value="text/htm" />
            </map>
        </property>
        <property name="defaultViews">
            <list>
                <!-- ModelAndView里的数据变成JSON -->
                <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
            </list>
        </property>
        <property name="ignoreAcceptHeader" value="true"></property>
    </bean>
     <!-- 对转向页面的路径解析。prefix:前缀, suffix:后缀 -->
   <!--JSP视图解析器-->
    <bean id="viewResolverJsp" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
    <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
        <property name="templateLoaderPath" value="/WEB-INF/views"/>
        <!-- 设置页面中文乱码问题 -->
        <property name="freemarkerSettings">
        <props>
        <prop key="defaultEncoding">UTF-8</prop>
        </props>
        </property>
    </bean>
    <bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
        <!-- 解决freemarker中文乱码 -->
        <property name="contentType" value="text/html;charset=UTF-8"/>
        <property name="cache" value="true"/>
        <property name="prefix" value=""/>
        <property name="suffix" value=".ftl"/>
        <property name="order" value="0"/>
    </bean>
    <mvc:interceptors>
        <mvc:interceptor >
            <mvc:mapping path="/**"/>
         <!--    对于静态资源,可以通过后缀名
            <mvc:exclude-mapping path="/**/*.js"/>
            <mvc:exclude-mapping path="/**/*.css"/>
            <mvc:exclude-mapping path="/**/*.jpg"/>
            <mvc:exclude-mapping path="/**/*.gif"/>
            <mvc:exclude-mapping path="/**/*.png"/>
            也可以通过文件夹, 加这些exclude-mapping就不会被拦截器拦截到,资源能够正常访问 -->
            <mvc:exclude-mapping path="/back_css/**"/>
            <mvc:exclude-mapping path="/back_js/**"/>
            <mvc:exclude-mapping path="/back_img/**"/>
            <mvc:exclude-mapping path="/skin/**"/>
            <bean class="com.ys.interceptors.DefaultInterceptors"/>
        </mvc:interceptor>
    </mvc:interceptors>
</beans>

需要注意的就是:

<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
        <property name="templateLoaderPath" value="/WEB-INF/views"/>
        <!-- 设置页面中文乱码问题 -->
        <property name="freemarkerSettings">
        <props>
        <prop key="defaultEncoding">UTF-8</prop>
        </props>
        </property>
    </bean>
    <bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
        <!-- 解决freemarker中文乱码 -->
        <property name="contentType" value="text/html;charset=UTF-8"/>
        <property name="cache" value="true"/>
        <property name="prefix" value=""/>
        <property name="suffix" value=".ftl"/>
        <property name="order" value="0"/>
    </bean>

这两个配置文件,其中org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer在spring-webmvc.jar 包里面,项目要导入这个jar包才可以,或者会找不到类。

注意:还有一种常见的导致乱码问题:你页面的编码跟文件保存的编码不一致时就会出现错误。右键修改为UTF-8就可以。

时间: 2024-12-18 07:23:00

freemarker页面中文乱码的相关文章

vs2015 生成 cordova 页面中文乱码

原文:vs2015 生成 cordova 页面中文乱码 1.用VS2015新创建Cordova项目,启动运行index.html 中文显示乱码 解决方案: 1.使用text/html通用解析编码utf-8 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> 2.使用记事本打开index.html文件,另存为文件,选择编码utf-8,然后页面显示就正常了 原文地址:htt

如何彻底解决jsp页面中文乱码及数据库乱码

最近自己闲做一个小项目,搭建环境框架SSH+MySQL数据库,遇到一个问题:jsp页面中文显示乱码,数据库插入数据和更新数据时中文也显示乱码,后来在网上找了许多解决方法,还是折腾了两天才把问题解决,下面总结一下彻底解决中文乱码问题: 在项目里的我统一使用UTF-8的编码方式 1.知道自己安装Mysql数据库安装配置时选择了什么编码方式,如果之前安装,现在不太清楚,建议重新安装Mysql数据库,安装配置时选择utf8 (这里有个小技巧:不用卸载Mysql数据,找到安装Mysql数据库目录:D:\M

ssh页面中文乱码问题

今天碰到一个问题,在我做的ssh项目中,程序在一个action中将一串中文提示语句 —— 一个字符串存在session中(且不讨论用session存这个合不合理),在另外一个action渲染的jsp页面中用el表达式取出来呈现,形如:${requestScope.noright}. 在我的开发环境中(Tomcat6 + MyEclipse8.5),这一个提示语句显示正常,并没有出现乱码的状况.但是当我将其部署到was的测试环境时,这一句提示信息显示成了“????????”,一串问号,而页面其他地

Zabbix 监控页面中文乱码

问题描述: 如题,我相信大多数人都遇到过这个问题,Zabbix 监控图 中文乱码. 解决这个问题也很简单:( Zabbix 网页目录中缺少字体 ) 1.打开 Windows 的 C:\Windows\Fonts 字体存放目录,选一款你喜欢的字体 ( 建议选清爽一点的,太花的放上去看不清楚 ) 2.我选择的是 楷体常规,文件名为 simkai.ttf,把这个文件传到服务器的 Zabbix 网页目录中 ../html/zabbix/fonts ( 如果原文件名是 .TTF 的,记得改成 .ttf )

PHP页面中文乱码处理办法

1.为什么会出现乱码? 出现乱码问题的原因,一般都是页面的中文字符的编码格式与浏览器编码格式不符.这个时候需要我们去调整页面的编码格式.下面我们来看看处理这类问题的方法: 2.页面乱码解决办法一般我们会采用在PHP 页面声明编码方法去处理中文乱码问题,主要采用header和meta方法解决.下面我们来看下这两者的区别 2.1Meta页面编码 使用 <META http-equiv="content-type" content="text/html; charset=xx

Python 生成的页面中文乱码问题

第一 保证 程序源文件中的中文的编码格式,如我们把 源文件的编码设置成utf8的. reload(sys) sys.setdefaultencoding('utf-8') 第二, 告诉浏览器,我们需要用什么格式来展示字符 . web.header('Content-Type', 'text/html; charset=UTF-8') 主要是加这个 HTML格式的头部中说明. 这样基本可以解决,Python生成的网页中文乱码的问题. 版权声明:本文为博主原创文章,未经博主允许不得转载.

【nodejs】使用response输出中文但页面中文乱码的处置

两点要确认: 1.head里有<meta charset="utf-8"/> 2.js文件编码为utf-8格式. 第二点往往容易被忽略,所以出现乱码. 附上代码: 'use strict'; var express=require('express'); var http=require('http'); var app=express(); app.get('/index.html',function(req,rsp){ rsp.writeHead(200,{'Conte

html转jsp页面中文乱码问题解决

最近用到layui的后台大布局框架,结果吧代码粘过来,改为jsp页面出现乱码(如下) 原因,HTML改为jsp格式后,缺少jsp页面的头部 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 加上它问题解决 原文地址:https://www.cnblogs.com/jmdd/p/12128349.html

分享url带中文参数,打开html操作完毕跳转jsp页面中文乱码解决

1.在app端分享参数组合时不对传递的url进行任何编码. 2.打开html页面时使用 escape函数对有中文的参数进行编码 escape(GetQueryString("parameter")); 3.操作完毕跳转.jsp页面时,需要使用jsp解码,不能使用javascript函数进行解码否则 乱码 <%@page import="java.net.URLDecoder" %> androidLoadStoreUrlResterAlert=URLDe