当有人问你:JSP中的<%@page pageEncoding=”UTF-8”%>具体的功能是什么?
你答:设置页面编码字符集。没了,那可不太合适,小编在这里详解一下
JSP-> .java文件的翻译过程,由谁执行?
是Tomcat(中间件容器)执行的.
那么中间件容器运行在什么环境中?
相信有人不太清楚,是运行在你的操作系统中的.
那么操作系统的字符集又是什么呢?
操作系统的字符集是根据具体环境定义的:
如:中国GBK、中国台湾BIG5等等.
Tomcat默认使用ISO-8859-1字符集编译jsp.
JSP提供页面指令,设置页面字符集, 通知中间件容器在翻译JSP的时候,使用什么字符集来翻译.调用JVM编译和解释java代码及字节码文件的时候,使用什么字符集.
例如:
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
1.pageEncoding与contentType
中的
charset
的区别
1
)
在jsp
中
pageEncoding
的含义:宏观上指
jsp文件本身的编码
,pageEncoding="UTF-8",
指
jsp
文件本身的编码为
UTF-8
2
) 而
contentType
中的
charset
指的是
服务器发送给客户端时的内容编码
,
contentType="text/html; charset=UTF-8",
是指服务器发送给客户端的文本类型是text/html
,编码格式是UTF-8
底层:
.jsp
文件被转译成
.java
文件时,
response.setContentType("text/html;charset=ISO-8859-1");
[size=10.5000pt]2. pageEncoding="UTF-8"与pageEncoding="ISO-8859-1"区别
[size=10.5000pt]1)在浏览器上显示,pageEncoding="UTF-8"格式的jsp
页面中的中文没有乱码,而pageEncoding="ISO-8859-1"格式的jsp
页面中的中文有乱码
[size=10.5000pt]2)
在.jsp
文件被转译成
.java
文件时,pageEncoding="UTF-8"格式的.java
文件中的中文没有乱码,而pageEncoding="ISO-8859-1"格式的.java
文件中的中文有乱码
如下:
代表pageEncoding="ISO-8859-1"格式的.java
文件
out.write(" \t\t我çˆ
±
我å®
¶
\r\n");
out.write(" \t\t<form action=\"#\">\r\n");
out.write(" \t\t\tå
§
“åï
¼
š<input type=\"text\">\r\n");
out.write(" \t\t\t<input type=\"submit\" value=\"æä
º¤
\">\r\n");
代表pageEncoding="UTF-8"格式的.java
文件
out.write(" \t\t
我爱我家
\r\n");
out.write(" \t\t<form action=\"#\">\r\n");
out.write(" \t\t\t
姓名:
<input type=\"text\">\r\n");
out.write(" \t\t\t<input type=\"submit\" value=\"
提交
\">\r\n");
[size=10.5000pt]3)
总结:也因此说明1
)条结论中为什么在浏览器中pageEncoding="ISO-8859-1"格式的jsp
页面中的中文有乱码原因:
在于pageEncoding="ISO-8859-1"格式的.jsp
文件在被转译成
.java
文件时就已经出现乱码,服务器再把乱码的数据响应到浏览器,自然浏览器展示出来的数据也是乱码的。