java web 在jsp中使用include指令导入带中文的HTML文件乱码问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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编码必须一致,否则将会报如下编码不一致的错误: