已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
=说法一=ContentType 属性指定响应的 HTTP 内容类型。如果未指定 ContentType,默认为 text/HTML。 语法Response.ContentType = ContentType 参数 ContentTypepageEncoding是jsp文件本身的编码contentType的charset是指服务器发送给客户端时的内容编码JSP要经过两次的“编码”,第一阶段会用pageEncoding,第二阶段会用utf-8至utf-8,第三阶段就是由Tomcat出来的网页, 用的是contentType。第一阶段是jsp编译成.java,它会根据pageEncoding的设定读取jsp,结果是由指定的编码方案翻译成统一的UTF-8 JAVA源码(即.java),如果pageEncoding设定错了,或没有设定,出来的就是中文乱码。第二阶段是由JAVAC的JAVA源码至java byteCode的编译,不论JSP编写时候用的是什么编码方案,经过这个阶段的结果全部是UTF-8的encoding的java源码。pageEncoding:设置JSP源文件和响应正文中的字符集编码。contentType:设置JSP源文件和响应正文的字符集编码及MIME类型。可见,pageEncoding和contentType都可以设置JSP源文件和响应正文中的字符集编码。但也有区别:设置JSP源文件字符集时,优先级为pageEncodingcontentType。如果都没有设置,默认ISO-8859-1。设置响应输出的字符集时,优先级为contentTypepageEncoding。如果都没有设置,默认ISO-8859-1。可以简单认为是,pageEncoding是jsp文件本身的编码;contentType的charset是指服务器发送给客户端时的内容编码。例如:pageEncoding=GBK。这句话的意思是,告诉JVM 这个jsp本身采用的GBK编码,在JSP编译成Servlet传给JVM的时候,就用“GBK”的编码方式将Jsp网页源文件翻译成统一的UTF-8形式的Java字节码。如果不加设定,则JVM默认的用ISO-8859-1这种编码方式。contentType里的charset=gbk,指的是此网页文件输出到浏览器的输出方式为gbk。在这个过程中,一个JSP的源文件需要经过三个阶段,两次编码,才能完成一次完整的输出。第一阶段:将jsp编译成Servlet(.java)文件。用到的指令是pageEncoding,根据pageEncoding“XXX”的指示,找到编码的规则为“XXX”,服务器在将JSP文件编译成.java文件时会根据pageEncoding的设定读取jsp,结果是由指定的编码方案翻译成统一的UTF-8编码的JAVA源码(即.java)。第二阶段:从Servlet文件(.java)到Java字节码文件(.class),从UTF-8到UTF-8。在这一阶段中,不论JSP编写时候用的是什么编码方案,经过这个阶段的结果全部是UTF-8的encoding的java源码。JAVAC用UTF-8的encoding读取java源码,编译成UTF-8编码的二进制码(即.class),这是JVM对常数字串在二进制码(java encoding)内表达的规范。这一过程是由JVM的内在规范决定的,不受外界控制。第三阶段:从服务器到浏览器,这在一过程中用到的指令是contentType。服务器载入和执行由第二阶段生成出来JAVA二进制码,输出的结果,也就是在客户端可见到的结果,在这次输出过程中,由contentType属性中的charset来指定,将UTF8形式的二进制码以charset的编码形式来输出。如果没有人为设定,则默认的是ISO-8859-1的形式。=说法二=ContentType (描述内容类型的字符串。该字符串通常被格式化为类型/子类型,其中类型是常规内容范畴而子类为特定内容类型)一句话总结就是,服务器响应客户端是以ContentType 的类型来响应的。这个很容易理解,但是在百度百科里面看了一下发现问题了,在contenttype里面有一个属性是charset 指定编码的,而pagEncoding也是编码的,这两个编码有什么区别呢?查阅了资料之后有了深刻的了解!pageEncoding是jsp文件本身的编码contentType的charset是指服务器发送给客户端时的内容编码JSP要经过两次的编码,第一阶段会用pageEncoding,第二阶段会用utf-8至utf-8,第三阶段就是由Tomcat出来的网页,用的是contentType第一阶段是jsp编译成.java,它会根据pageEncoding的设定读取jsp,结果是由指定的编码方案翻译成统一的UTF-8 JAVA源码(即.java),如果pageEncoding设定错了,或没有设定,出来的就是中文乱码。第二阶段是由JAVAC的JAVA源码至java byteCode的编译,不论JSP编写时候用的是什么编码方案,经过这个阶段的结果全部是UTF-8的encoding的java源码。JAVAC用UTF-8的encoding读取java源码,编译成UTF-8 encoding的二进制码(即.class),这是JVM对常数字串在二进制码(java encoding)内表达的规范。第三阶段是Tomcat(或其的application container)载入和执行阶段二的来的JAVA二进制码,输出的结果,也就是在客户端见到的,这时隐藏在阶段一和阶段二的参数contentType就发挥了功效contentType的设定.pageEncoding 和contentType的预设都是 ISO8859-1. 而随便设定了其中一个, 另一个就跟着一样了(TOMCAT4.1.27是如此). 但这不是绝对的, 这要看各自JSPC的处理方式. 而pageEncoding不等于contentType,记得老师上课讲的时候遇到了下面这种情况 他的处理办法是把utf-8改成了gbk,貌似就是利用了随便改变其中一个另一个就跟着变的原理吧。实际上正规的该法应该是但是如果改成了这样,在服务器端收到的获取的中文不是乱码,但是在客户端打开的还是乱码,因为charset=utf-8 中charset指定了,输出到客户端的是utf-8的编码,所以想正规的该法应该改成貌似这样写,还不如简单呢, 看来以后自己还是用 这种简单的写法吧!纯属个人自学的理解。如果错误还望指出=说法三=名词解释及其作用 1.contentType:2.pageEncoding: 3.html页面charset:4.setCharacterEncoding:request.setCharacterEncoding(),response.setCharacterEncoding()5.setContentType:response.setContentType()6.setHeader:response.setHeader()7.jsp页面编码:jsp文件本身的编码8.web页面显示编码:jsp的输出流在浏览器中显示的编码9.web页面输入编码:输入框输入的字体编码10.web服务器输入的请求流:webServer相应浏览器的请求数据11.web服务器输出的响应流:webServer相应浏览器的输出数据他们之间的相互影响和作用域,以及先后作用顺序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类型和字符编码方式由分号隔开;pageEncoding和contentType的关系:1.pageEncoding的内容只是用于jsp输出时的编码,不会作为header发出去的;是告诉webServerjsp页面按照什么编码输出,即web服务器输出的响应流的编码;2.第一阶段是jsp编译成.java,它会根据pageEncoding的设定读取jsp,结果是由指定的编码方案翻译成统一的UTF-8JAVA源码(即.java).3.第二阶段是由JAVAC的JAVA源码至javabyteCode的编译,不论JSP编写时候用的是什么编码方案,经过这个阶段的结果全部是UTF-8的encoding的java源码.JAVAC用UTF-8的encoding读取java源码,编译成UTF-8encoding的二进制码(即.class),这是JVM对常数字串在二进制码(javaencoding)内表达的规范.4.第三阶段是Tomcat(或其的applicationcontainer)载入和执行阶段二的来的JAVA二进制码,输出的结果,也就是在客户端见到的,这时隐藏在阶段一和阶段二的参数contentType就发挥了功效 和contentType效果一样的设置方式还有html页面charset,response.setCharacterEncoding(),response.setContentType(),response.setHeader();response.setContentType(),response.setHeader();优先级最好,其次是response.setCharacterEncoding();再者是,最后是.5. web页面输入编码:在设置页面编码的同时,也就指定了页面的输入编码;如果页面的显示被设置为UTF-8,那么用户所有的页面输入都会按照UTF-8编码;服务器端程序在读取表单输入之前要设定输入编码;表单被提交后,浏览器会将表单字段值转换为指定字符集对应的字节值,然后根据HTTP标准URL编码方案对结果字节进行编码.但是页面需要告诉服务器当前页面的编码方式;request.setCharacterEncoding(),能修改Serverlet获取请求的编码,response.setCharacterEncoding(),能修改Serverlet返回结果的编码.或者用下面来说明: pageEncoding是设置的JSP页面源代码的字符编码格式,如果该项的值是utf-8,则JSP源代码里不能写汉字了,如果你用的是eclipse等工具的话,保存时他会提示有一个错误,改成gbk就没事了,就是这个道理 charset是请求服务器以后返回过来的内容的字符编码,即使pageEncoding设置了gbk,保存,运行程序,查看页面时会发现刚才写的汉字不能正常显示,把charset改成gbk,正常JSP要经过两次的“编码”,第一阶段会用pageEncoding,第二阶段会用utf-8至utf-8,第三阶段就是由Tomcat返回来的网页,用的是charset。第一阶段是jsp编译成.java,它会根据pageEncoding的设定读取jsp,结果是由指定的编码方案翻译成统一的UTF-8 JAVA源码(即.java),如果pageEncoding设定错了,或没有设定,出来的就是中文乱码。第二阶段是由JAVAC的JAVA源码至java byteCode的编译,不论JSP编写时候用的是什么编码方案,经过这个阶段的结果全部是UTF-8的encoding的java源码。第三阶段是Tomcat(或其的application container)载入和执行阶段,输出的结果,也就是在客户端见到的,这时隐藏在阶段一和阶段二的参数contentType就发挥了功效。注意:在设置JSP页面源代码字符编码的时候,如果有pageEncoding这一项,则采取这一项的值,如果没有,采取charset的值,如果都没有,采取iso8859-1。pageEncoding 和conte
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 产科虚拟分娩模拟与助产技能标准化
- 产科虚拟仿真技术在产科科研中的应用
- 交叉设计在生物等效性试验中的高变异药物策略
- 创业平台服务方法和作业流程
- 交互式模拟对医疗差错预防策略的实践效果
- 初中教师培训心得体会(30篇)
- 全员消防安全知识培训
- IGBT模块PIN针失效风险改善研究
- 略论悬念的翻译
- 现代农业园区解决方案研究报告
- 2025年中医学专业基础考试试题及答案
- GB/T 45595-2025离心式制冷剂压缩机
- 生态环境标准应用 课件 大气污染物综合排放标准2
- 小学素养大赛考试参考题库300题(含各题型)
- 硬盘质保合同协议
- 2025-2030应急指挥通信系统及子行业应急指挥车行业市场深度调研报告
- 护理学专业职业素养教育
- 混凝土机械知识培训课件
- 《实验室应急预案》专题培训
- 《海洋调查与监测》课件
- 国际合作基本信息表
评论
0/150
提交评论