JSP通过include标签或frame标签等引入HTML文件页面出现中文乱码终极解决方案include标签和frame标签
JSP通过include标签或frame标签等引入HTML文件页面出现中文乱码终极解决方案include标签和frame标签
特别苦恼,研究了整整两天,终于整理出解决方案,应该能把这乱码问题给解决!大家可以参考一下哈!
问题背景情况:
1、HTML文件中的写了中文,然后JSP通过"include"或者"frame"标签引入HTML作为页面的一部分,HTML的"head"标签中写了如下代码:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
2、而JSP的第一行中也写了如下代码:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
3、而Tomcat的conf目录下的server.xml文件下配置了如下代码
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
4、数据库编码也是UTF-8
5、过滤器web.xml下也配置了
<filter>
<filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
可结果…还是乱码
根本原因肯定还是编码不对应的问题,你如果上面都照做了还是乱码,那可以试一下下面的解决方案:
一、在HTML第一行加入:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
二、在项目的web.xml中去统一配置一下pageEncoding的编码,在web-app标签里添加如下配置
<jsp-config>
<jsp-property-group>
<description>html encoding</description>
<display-name>JSPConfiguration</display-name>
<url-pattern>*.html</url-pattern>
<el-ignored>true</el-ignored>
<page-encoding>UTF-8</page-encoding>
<scripting-invalid>false</scripting-invalid>
<include-prelude></include-prelude>
<include-coda></include-coda>
</jsp-property-group>
</jsp-config>
我前面两种方法都试过了,还乱码…
这时候我把HTML本来的UTF-8编码换成GBK编码,发现乱码和页面的乱码一模一样,我就知道,肯定HTML编码是GBK,于是我也试了各种,比如重新建文件,编码设置为UTF-8或者UTF-8 BOM编码还有GBK编码,也都不可以
最后,我把HTML文件中原本head标签设置的charset=utf-8改为如下:
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
更改为GBK,其他JSP、Tomcat、Mysql还是保持UTF-8不变,没想到,界面不乱码了,因为HTML这里设置的服务端告诉客户端的编码格式,所以解决!大家可以参考下!总是乱码还是编码没统一问题,理解原理,就可以解决!感谢大家!