java web 在jsp中使用include指令导入带中文的HTML文件乱码问题

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

java web 在jsp中使用include指令导入带中文的HTML文件乱码问题

在jsp中会用%@include “文件名.后缀名”导入带中文的HTML 文件时,最后编译浏览网页时会出现乱码问题。MyHtml.html代码文件:

Index.jsp代码文件

调试部署后在浏览器中浏览乱码:

我们在打开tomcat下由jsp编译成对应的Java源码文件,此时发现这里面对应从HTML文件中导入部分的编译成的Java 源码也是乱码的。这可以猜想,出现乱码的问题应该出现在把jsp文件转换成Java类的过程中。

设置编码的代码有两个:pageEncoding和contentType,他们

有,以下区别:

1、(第一次访问时)web容器将jsp编程成Java文件,这个阶段编译器会根据pageEncoding设置的编码来读取jsp文件,翻译成utf-8的Java类文件。,如果pageEncoding设置错误或者未设置,编译出来的Java文件就会出现乱码。

2、由javac将Java类的源码编译成.class字节码文件,javac 将用utf-8编码读取Java源码,编译成二进制文件。

3、web容器载入class字节码文件,将内容输出到客户端,这一过程内容的编码为contentType设置的编码。

可以分析出,出现乱码的问题是HTML文件并没指定pageEncoding的编码。有两种解决方法:

方法1、在每个将要被指令引入的HTML文件前声明文件的pageEncoding的编码。即在标签前添加<%@ page pageEncoding=”utf-8”%>。尽管HTML无法识别该指令,但是通过include指令引入jsp之后就能起作用了。如下:

方法二:在web.xml里统一配置pageEncoding的编码,在web-app标签里添

方法一和方法二原理是一样的,都是通过设置pageEncoding编码来指定jsp将html文件include 时使用的编码。方法一和方法二任选一种即可,如果

同时使用需要注意两个地方设置的pageEncoding编码必须一致,否则将会报如下编码不一致的错误:

相关文档
最新文档