java web 在jsp中使用include指令导入带中文的HTML文件乱码问题
2017-07-29 19:23
756 查看
在jsp中会用<%@ include file= "pageName.html" %>导入带中文的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的编码。即在<html>标签前添加<%@ page pageEncoding=”utf-8”%>。尽管HTML无法识别该指令,但是通过include指令引入jsp之后就能起作用了。如下:
方法二:在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>
方法一和方法二原理是一样的,都是通过设置pageEncoding编码来指定jsp将html文件include时使用的编码。
方法一和方法二任选一种即可,如果同时使用需要注意两个地方设置的pageEncoding编码必须一致,否则将会报如下编码不一致的错误:
org.apache.jasper.JasperException: /in.html (line: 1, column: 2) Page-encoding specified in jsp-property-group (UTF-8) is different from that specified in page directive (GBK)
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的编码。即在<html>标签前添加<%@ page pageEncoding=”utf-8”%>。尽管HTML无法识别该指令,但是通过include指令引入jsp之后就能起作用了。如下:
方法二:在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>
方法一和方法二原理是一样的,都是通过设置pageEncoding编码来指定jsp将html文件include时使用的编码。
方法一和方法二任选一种即可,如果同时使用需要注意两个地方设置的pageEncoding编码必须一致,否则将会报如下编码不一致的错误:
org.apache.jasper.JasperException: /in.html (line: 1, column: 2) Page-encoding specified in jsp-property-group (UTF-8) is different from that specified in page directive (GBK)
相关文章推荐
- jsp include标签引入html文件中文乱码问题解决
- jsp include标签引入html文件中文乱码问题解决
- php使用NuSoap调用java/C# webservice的中文乱码问题
- 使用Java 导入Zip文件遇到中文命名乱码问题
- Java web开发中使用get提交表单时的中文乱码问题
- java web中配置Filter解决jsp中文乱码问题
- javaweb开发中的中文乱码问题,使用Filter过滤器解决
- 关于jsp include html文件导致中文乱码的问题
- TOMCAT 下中文乱码问题解决集锦/Java/JSP中文乱码问题解决
- Java/JSP中文乱码问题解决心得
- [转]Java/JSP中文乱码问题解决心得
- Java jsp sevlet中文乱码问题解决方案
- jsp使用URL编码传递中文参数问题※※jsp传递中文参数乱码问题
- JSP,mysql,tomcat下(基于struts2)中文及其乱码问题的解决 5大配置点 使用UTF-8编码
- Java/JSP中文乱码问题解决心得
- Java web中servlet中文乱码问题
- JSP中,AJAX使用POST方式提交中文乱码问题解决
- 关于在MySQL 、 VC、 JSP 中使用UTF-8解决中文生僻字乱码的问题
- 使用JSP开发应用程序时的编码(中文等乱码)问题的建议解决方案(包括接受request和数据库操作)
- 对Java/JSP中文乱码问题解决心得