当有人问你: 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 文件时就已经出现乱码, 服务器再把乱码的数据响应到浏览器, 自然浏览器展示出来的数据也是乱码的.
来源: http://www.bubuko.com/infodetail-2868088.html