JSP通过include标签或frame标签等引入HTML文件页面出现中文乱码终极解决方案include标签和frame标签

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这里设置的服务端告诉客户端的编码格式,所以解决!大家可以参考下!总是乱码还是编码没统一问题,理解原理,就可以解决!感谢大家!

发布了23 篇原创文章 · 获赞 15 · 访问量 2548

猜你喜欢

转载自blog.csdn.net/u010511598/article/details/104208703