`

JSP包含指令include包含html文件出现乱码分析与解决

 
阅读更多

关于JSP页面中的pageEncoding和contentType两种属性的区别:
pageEncoding是jsp文件本身的编码
contentType的charset是指服务器发送给客户端时的内容编码

JSP要经过两次的“编码”,第一阶段会用pageEncoding,第二阶段会用utf-8至utf-8,第三阶段就是在客户端浏览器里看到的网页, 用的是contentType。

 

第一阶段是jsp编译成.java,它会根据pageEncoding的设定读取jsp,结果是由指定的编码方案翻译成统一的UTF-8 JAVA源码(即.java),如果pageEncoding设定错了,或没有设定,出来的就是中文乱码。

 

第二阶段是由JAVAC的JAVA源码至java byteCode的编译,不论JSP编写时候用的是什么编码方案,经过这个阶段的结果全部是UTF-8的encoding的java源码。

JAVAC用UTF-8的encoding读取java源码,编译成UTF-8 encoding的二进制码(即.class),这是JVM对常数字串在二进制码(java encoding)内表达的规范。

 

第三阶段是Tomcat(或其的application container)载入和执行阶段二的来的JAVA二进制码,输出的结果,也就是在客户端见到的,这时隐藏在阶段一和阶段二的参数contentType就发挥了功效

而include指令就是在第一阶段之前执行的,注意这个是在第一阶段之前,所以,如果包含文件和被包含文件的文件编码不是utf-8,那么,该指令就会工作不太正常,不能正确的把被包含的文件从原来编码转换为包含文件的编码,就会出现乱码现象.

 

解决的方法有很多,一种很简单的方法就是,把包含文件的pageEncoding设置为utf-8,同时,把被包含文件的pageEncoding也设置 为utf-8,如果被包含文件为html的话,如果你使用的ide是eclipse的话,那么,可以这么做,在被包含文件名上右键单击,选择属性 (properties),Resource下,在text file encoding里选择utf-8,这样就可以做到正常显示了.如果用的是其他的编辑工具,比如Dream weaver,也有响应的修改页面编码的地方.
另外一种方法比较麻烦点,但是也挺好用,支持各种编码方式,只需要修改web.xml文件就可以了.

 

方法为:在web.xml里添加(注意我所使用的javaee版本2.5为

 

<web-app xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5″>

	<jsp-config>
		<jsp-property-group>
			<description>jsp encoding example</description>
			<display-name>JSPConfiguration</display-name>
			<url-pattern>*.jsp</url-pattern>
			<el-ignored>true</el-ignored>
			<page-encoding>gbk</page-encoding>
			<scripting-invalid>false</scripting-invalid>
			<include-prelude></include-prelude>
			<include-coda></include-coda>
		</jsp-property-group>
		<jsp-property-group>
			<description>html encoding example</description>
			<display-name>JSPConfiguration</display-name>
			<url-pattern>*.html</url-pattern>
			<el-ignored>true</el-ignored>
			<page-encoding>gbk</page-encoding>
			<scripting-invalid>false</scripting-invalid>
			<include-prelude></include-prelude>
			<include-coda></include-coda>
		</jsp-property-group>
	</jsp-config>
</web-app>
 
分享到:
评论

相关推荐

    jsp include 乱码问题的解决

    在JSP中,页面的编码、包含的文件的编码以及服务器的默认编码如果设置不统一,就可能出现乱码现象。 1. **JSP页面编码设置**: JSP页面默认的编码是ISO-8859-1,若内容包含中文或其他非ASCII字符,需要在页面头部...

    jsp include文件时的一个乱码解决方法.docx

    要解决 JSP include 文件时的乱码问题,需要在被包含文件中再次声明 `contentType`。例如,在 Tomcat 5.x 版本中,需要在被包含文件中声明 `@page contentType="text/html; charset=gbk"`,且这里声明的内容必须跟...

    JSP中文乱码处理JSP中文乱码处理

    在多个页面通过`include`指令合并时,需要确保所有包含的页面都保持一致的编码设置。 6. **数据库操作** 在数据库操作中,乱码问题通常出现在输入和输出。确保数据库连接的字符集设置与你的应用中使用的编码匹配。...

    JSP中文乱码解决

    文件中的`&lt;%@ include file="../common/header.jsp" %&gt;`和`&lt;%@ include file="../common/footer.jsp" %&gt;`分别包含了页面的头部和尾部内容。这是常见的做法,可以提高代码的重用性和维护性。在`header.jsp`中可能...

    5种JSP页面显示为乱码的解决方法

    如果页面中包含其他被`include`指令引入的文件,则这些文件也必须设置相同的`pageEncoding`值,避免出现类似`org.apache.jasper.JasperException`异常。 为了更好地管理这些配置,可以在`web.xml`文件中集中设置...

    JSP常见的三个编译指令page、include、taglib

    jsp中include指令静态导入和动态导入的区别详解JSP编译指令page、include详解JSP中动态include与静态include的区别介绍JSP指令元素(page指令/include指令/taglib指令)复习整理基于jsp:included的使用与jsp:param乱码...

    JSP内置对象之域对象和JSP指令

    ### JSP内置对象之域对象和JSP指令详解 #### JSP内置对象之域对象 在JSP技术中,有几种内置对象被称为“域对象”,它们用于存储数据,并且具有不同的作用范围。这些域对象包括`pageContext`、`request`、`session`...

    JavaWeb程序设计入门课件JSP指令共5页.pdf.z

    JSP指令主要分为三类:页面指令、包含指令和标签库指令。这些指令在JSP文件中以`&lt;%@&gt;`开头,它们不是HTML标签,而是用于配置JSP页面和引入外部资源的元数据。 1. **页面指令**(Page Directive):页面指令用于设置...

    基于jsp:included的使用与jsp:param乱码的解决方法

    本文中涉及到的核心知识点包括了JSP标签库中的&lt;jsp:include&gt;标签的使用以及解决通过&lt;jsp:param&gt;标签传递参数时出现的乱码问题。 首先,让我们来了解&lt;jsp:include&gt;标签的使用。在JSP页面中,&lt;jsp:include&gt;标签被用来...

    解决tomcat中文乱码问题

    当使用`jsp:forward`或`jsp:include`等JSP动作指令传递中文参数时,应在原页面中设置`request`对象的字符编码,确保中文参数的正确传递。 例如,在`param.jsp`中: ```java &lt;%@ page contentType="text/html;...

    html改jsp1

    在将HTML文件转换为JSP文件之前,需要在HTML文件的头部添加JSP指令,告知服务器这是一个JSP页面,并指定字符编码和内容类型。这一步骤的代码如下: ```jsp &lt;%@ page language="java" contentType="text/html; ...

    Tomcat中文乱码解决方法参考.pdf

    五、jsp 动作指令传递中文乱码解决 在使用 jsp 动作指令(如 jsp:forward、jsp:include)时,只需在原页面中设置 request 的字符编码格式为当前网页编码即可。例如: 原页面 param.jsp 代码(设网页编码为 gb2312...

    JSP利用过滤器解决request中文乱码问题

    因此,为了解决request中文乱码问题,JSP提供了一种使用过滤器(Filter)的方法。 在JSP中使用过滤器来解决中文乱码问题的步骤大致如下: 首先,要创建一个过滤器类,该类需要实现javax.servlet.Filter接口。在该...

    JSP课程设计--JSP留言板

    在JSP文件中,可能使用了JSP指令(如`&lt;%@ page %&gt;`, `&lt;jsp:include&gt;`等)和脚本元素(如`&lt;% %&gt;`)来控制页面行为和导入必要的Java类。 10. **响应编码与字符集** 在JSP页面中,确保正确的响应编码和字符集是非常...

    jsp与javabean

    - **指令元素**:如`&lt;%@ page %&gt;`, `&lt;%@ include %&gt;`, `&lt;jsp:include&gt;`, `&lt;jsp:useBean&gt;`, `&lt;jsp:setProperty&gt;`等,它们提供有关JSP页面的元信息,例如设置页面编码、导入Java包等。 - **动作元素**:如`&lt;jsp:...

    我的JSP论文,可以是一个小小的测试

    ### JSP指令元素 JSP提供了三种基本的指令元素:`page`、`include`和`taglib`。这些指令用于控制JSP页面的行为,如设置脚本语言、导入包、指定错误处理页面、包含其他资源等。 #### page指令 `&lt;%@ page %&gt;` 这个...

    jsp详细整理笔记

    ### JSP基础知识与应用详解 #### 一、JSP概述 JSP(JavaServer Pages)是一种基于Java技术的服务器端动态网页开发技术。它通过在HTML文档中嵌入Java代码来实现动态页面的生成。JSP文件在服务器上被编译成Servlet,...

    JSP考试复习资料

    包括`&lt;jsp:include&gt;`、`&lt;jsp:forward&gt;`、`&lt;jsp:param&gt;`等,用于在JSP页面中进行页面包含、转发等操作。`&lt;% %&gt;`用于插入Java代码,`&lt;%= %&gt;`用于输出表达式的值。 10. **JSP与HTML结合**: JSP允许在HTML中嵌入Java...

    jsp参考文献jsp参考文献jsp参考文献jsp参考文献

    - **JSP指令(Directives)**:如`&lt;%@ page %&gt;`, `&lt;%@ include %&gt;`, `&lt;%@ taglib %&gt;`, 它们用于配置页面属性,包含其他文件,以及引入标签库。 - **JSP动作(Actions)**:如`&lt;jsp:include&gt;`, `&lt;jsp:forward&gt;`, `...

Global site tag (gtag.js) - Google Analytics