`
gao36951
  • 浏览: 18080 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

jsp中影响编码的属性及其设置小结(contentType,pageEncoding,charset)

 
阅读更多

一:名词解释及其作用
1. contentType: <%@ page contentType="text/html; charset=UTF-8"%>
2. pageEncoding:<%@ page pageEncoding="UTF-8"%>
3. html页面charset:<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
4. setCharacterEncoding:request.setCharacterEncoding(),response.setCharacterEncoding()
5. setContentType:response.setContentType()
6. setHeader: response.setHeader()
7. jsp页面编码: jsp文件本身的编码
8. web页面显示编码:jsp的输出流在浏览器中显示的编码
9. web页面输入编码: 输入框输入的字体编码
10. web服务器输入的请求流: web Server相应浏览器的请求数据
11. web服务器输出的响应流: web Server相应浏览器的输出数据

二: 他们之间的相互影响和作用域,以及先后作用顺序


1. pageEncoding: 只是指明了 JSP 页面本身的编码格式,跟页面显示的编码没有关系;容器在读取(文件)或者(数据库)或者(字符串常量)时将起转化为内部使用的 Unicode,而页面显示的时候将内部的Unicode转换为contentType指定的编码后显示页面内容;如果pageEncoding属性存在,那么JSP页面的字符编码方式就由pageEncoding决定,否则就由contentType属性中的charset决定,如果charset也不存在,JSP页面的字符编码方式就采用默认的ISO-8859-1。

2. contentType: 指定了MIME类型和JSP页面回应时的字符编码方式。MIME类型的默认值是“text/html”;字符编码方式的默认值是“ISO-8859-1”. MIME类型和字符编码方式由分号隔开;

3. pageEncoding和contentType的关系:
1. pageEncoding的内容只是用于jsp输出时的编码,不会作为header发出去的; 是告诉web Server jsp页面按照什么编码输出,即web服务器输出的响应流的编码;
2. 第一阶段是jsp编译成.java,它会根据pageEncoding的设定读取jsp,结果是由指定的编码方案翻译成统一的UTF-8 JAVA源码(即.java).
3. 第二阶段是由JAVAC的JAVA源码至java byteCode的编译,不论JSP编写时候用的是什么编码方案,经过这个阶段的结果全部是UTF-8的encoding的java源码.JAVAC用UTF-8的encoding读取java源码,编译成UTF-8 encoding的二进制码(即.class),这是JVM对常数字串在二进制码(java encoding)内表达的规范.
4. 第三阶段是Tomcat(或其的application container)载入和执行阶段二的来的JAVA二进制码,输出的结果,也就是在客户端见到的,这时隐藏在阶段一和阶段二的参数contentType就发挥了功效

4. 和contentType效果一样的设置方式还有 html页面charset, response.setCharacterEncoding(),response.setContentType(),response.setHeader(); response.setContentType()
优先级分别是
response.setHeader()
response.setCharacterEncoding()
<%@page contentType="text/html; chareset=gbk"%>
<meta http-equiv="content-type" content="text/html; charset=gb2312" />

5. web页面输入编码: 在设置页面编码<%@page contentType="text/html; chareset=gbk"%>的同时,也就指定了页面的输入编码;如果页面的显示被设置为UTF-8,那么用户所有的页面输入都会按照 UTF-8 编码; 服务器端程序在读取表单输入之前要设定输入编码;表单被提交后,浏览器会将表单字段值转换为指定字符集对应的字节值,然后根据 HTTP 标准 URL编码方案对结果字节进行编码.但是页面需要告诉服务器当前页面的编码方式;request.setCharacterEncoding(),能修改servlet获取请求的编码,response.setCharacterEncoding(),能修改servlet返回结果的编码.

转自:http://blog.csdn.net/salahg/article/details/7214507


分享到:
评论

相关推荐

    JSP页面pageEncoding和contentType属性

    有关于JSP页面中pageEncoding和contentType属性。

    WEB17Project-jsp.rar 源代码

    pageEncoding:当前jsp文件的本身编码---内部可以包含contentType contentType:response.setContentType(text/html;charset=UTF-8) session:是否jsp在翻译时自动创建session import:导入java的包 errorPage:当...

    解决JSP到MySQL数据库中文乱码问题

     这里需要设置一下JSP页面的统一编码格式:  打开Eclipse-window-&gt;preferences. 根据图片操作.  设置完后, 再新建 JSP页面的时候, 会出现下面的编码.  &lt;&#37;@ page language="java" contentType=...

    Javaweb 小练习 prj.zip

    Javaweb 小练习代码绝对有你想要的,pageEncoding是JSP文件本身的编码;contentType的charset是指服务器发送给客户端时的内容编码。  JSP要经过两次的“编码”,第一阶段会用pageEncoding,第二阶段会用UTF-8至UTF...

    jspSmartUpload.jar

    1.下载后,直接放在web项目的WebRoot/WEB-INF/lib中,如果是实在jsp页面中使用,则在页面开始部分增加&lt;%@ import="com.jspsmart.upload.*" %&gt;(或者与util包的引入写在一起) 2.如果实在后台servlet中使用,则导入...

    java 的乱码教程

    在JSP/Servlet中主要有以下几个地方可以设置编码,pageEncoding="UTF-8"、 contentType="text/html;charset=UTF-8"、request.setCharacterEncoding("UTF- 8")和response.setCharacterEncoding("UTF-8"),其中前两个...

    jsp cookie+session实现简易自动登录

    关闭浏览器只会使存储在客户端浏览器内存中的session cookie失效,不会使服务器端的session对象失效。 如果设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie依然有效直到超过设定...

    jsp登陆界面源代码

    if(name.equals("abc")&& password.equals("123")) { %&gt; &lt;jsp:forward page="afterLogin.jsp"&gt; &lt;jsp:param name="userName" value="&lt;%=name%&gt;"/&gt; &lt;/jsp:forward&gt; &lt;% } else { %&gt; &lt;jsp:forward page="login.jsp...

    JSP对浏览器发送来的数据进行重新编码的两种方式

    在JSP/Servlet中主要有以下几个地方可以设置编码,pageEncoding=”GB18030″,contentType=”text/html;charset=GB18030″、request.setCharacterEncoding(“GB18030”)和 response.setCharacterEncoding(“GB18030...

    JSP javaBean的应用

    &lt;%@page contentType="text/html" pageEncoding="UTF-8"%&gt; &lt;jsp:useBean id="qqq" scope="page" class="aaa.Account" /&gt; &lt;jsp:setProperty name="qqq" property="*" /&gt; &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; ...

    myEclipse乱码解决办法

    二、对java源文件编码设置为UTF-8. windows-&gt;Preferences-&gt;general-&gt;Context Types-&gt;Text,选择Java Source File,在下面的Default encoding输入框中输入UTF-8,点Update,则设置Java文件编码为UTF-8。 一、设置...

    jsp中文显示问号问题解决方法

    问题: jsp中想要输出的中文被显示成“?” 解决方法 : 在eclipse-windows- preferences中 搜索jsp , ... charset=GB18030″ pageEncoding=”GB18030″%&gt; &lt;!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Trans

    JspSmartUpload上传文件到文件夹重名问题解决方法

    //将获取的图片另存为文件名为new,后缀名从原是文件中获得 file.saveAs(dir+"/new."+file.getFileExt(),su.SAVE_VIRTUAL); //获取图片的客户端路径名 String name1=file.getFilePathName(); out.print("客户机...

    数据库分页脚本 jsp

    charset=UTF-8" pageEncoding="UTF-8"%&gt; &lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%&gt; ; charset=utf-8" /&gt; ʽ &lt;script type="text/javascript"&gt; function gotoSelectedPage() { ...

    解决JSP开发中Web程序显示中文三种方法

    这个方法用于jsp页面中的中文显示。 方法二:使用过滤器 过滤器使用主要针对表单提交,插入数据库的数据都是?号。这也是应为tomcat不按request所指定的编码进行编码,还是自作主张的采用默认编码方式iso-8859-1...

    jsp连接MySQL实现插入insert操作功能示例

    下午终于实现了jsp连接MySQL执行插入操作的功能。在index.jsp页面输入数据,提交到mysql——insert.jsp页面进行插入数据库的操作。 index.jsp页面代码如下: 代码如下: &lt;&#37;@ page language=”java” ...

    基于JSP的论坛源码

    JSP 论坛 源码 源文件压缩上传 *,com.lbc.bbs.dao.impl.*,java.util.*,com.lbc.bbs.entity.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%&gt; request.setCharacterEncoding("utf-8"); //不管...

    jsp各种的程序运行图

    jsp的运行程序 &lt;%@page contentType="text/html" pageEncoding="UTF-8"%&gt; &lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt; ; charset=UTF-8"&gt; ...

    jsp编写简单的学生信息注册界面

    pageEncoding="UTF-8"%&gt; &lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt; &lt;html&gt; &lt;head&gt; &lt;meta ...

    jsp动态网页设计指导书

    JSP动态网页设计实验指导书index jsp: &lt;%@ page language &quot;java&quot; import &quot;java util &quot; pageEncoding &quot;GBK&quot;%&gt; &lt;% String path request getContextPath ; String basePath ...

Global site tag (gtag.js) - Google Analytics