本文共 1411 字,大约阅读时间需要 4 分钟。
在开发过程中遇到乱码十分的头痛,如果你在开发过程中也遇到了乱码,本文或许对你有些帮助。
乱码场景:
项目采用Spring框架,视图层使用freemarker,当点击某个链接时redirect到某个Action作些业务逻辑处理,然后再重定向到一个html页面,但是重定向到html页面时,html里面的中文全部变成乱码,在web.xml加过滤器,html、java编码都按UTF-8写还是不起作用,偶尔发现在Action里,加这句话可使页面恢复正常
response.setContentType("text/html;charset=utf-8");
如果每个Action都这样写很是繁琐,修改freemarker配置加入描红的代码
<bean id="freeMarkerViewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"> <property name="requestContextAttribute" value="rc"/> <property name="prefix" value=""/> <property name="suffix" value=".html"/> <property name="cache"> <value>false</value> </property> <property name="contentType" value="text/html" /> <property name="exposeSpringMacroHelpers" value="true"/> <property name="viewClass"> <value>org.springframework.web.servlet.view.freemarker.FreeMarkerView</value> </property> </bean>
在html头文件中加入<meta http-equiv="content-type" content="text/html; charset=UTF-8">然后在web.xml再配置下过滤器,将所有编码都统一,这样它就甭想再乱码了
<filter> <filter-name>encodingFilter</filter-name> <filter-class> org.springframework.web.filter.CharacterEncodingFilter </filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
转载地址:http://jjkxi.baihongyu.com/