`
方块石
  • 浏览: 60006 次
  • 来自: ...
社区版块
存档分类
最新评论

实验部分+网上摘抄

阅读更多
如果一下有您认为错误的,请指出来,谢谢.

http://www.360doc.com/content/060731/11/10506_169583.html

//  如果页面是GBK,容器是utf-8,好像不能转码

//  容器是gbk,页面是utf-8时,由于uft-8字符集比gbk宽,因此部分乱码 



这两个问题还需要验证



**************************************************

tomcat5.0下service.xml配置:

  <Connector
port="8080"               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               debug="0" connectionTimeout="20000"
               disableUploadTimeout="true"  URIEncoding="gbk" <!--此处设置容器的编码格式,但是只针对get方法有效--> useBodyEncodingForURI="false" <!--此处设置为true则使用容器默认的ISO编码格式,即使前面设置了URIEncoding -->
/>



**************************************************







protected void doGet (

      HttpServletRequest request,  HttpServletResponse response )throws ServletException, IOException

{
  //使用get方法提交,url编码默认 iso-8859-1,因为是通过url浏览器编码后的,也即web容器
//  request.setCharacterEncoding("GBK");//这个对get方法不起作用
  System.out.println("hello2="+new String(request.getParameter("user").getBytes("iso-8859-1"),"utf-8"));//容器默认的是ISO,如果对容器不设置,则后面的需要根据页面是什么编码,来转换成相对应的
  System.out.println("hello2="+request.getParameter("user"));
  System.out.println("hello2="+new String(request.getParameter("user").getBytes("gbk"),"gbk"));
  //如果页面,容器,都是utf-8,或页面,容器都是GBK,那么在java端就不用转码



//  容器是gbk,页面是utf-8时,由于uft-8字符集比gbk宽,因此部分乱码   (自己理解,不一定正确,有待验证)
  //  System.out.println("hello2="+new String(request.getParameter("user").getBytes("gbk"),"utf-8"));//三个字最后一个乱码
 
//  如果页面是GBK,容器是utf-8,好像不能转码
//  new String(request.getParameter("user").getBytes("utf-8"或gbk),"gbk")//这样先获得容器的uft-8格式,在转化成页面的GBK也不行
  //这个问题有待继续验证
}
protected void doPost (

      HttpServletRequest request, HttpServletResponse response )throws ServletException, IOException
{
  //post方法,在容器中设置编码不起作用,都是用iso编码,除非在request中设置
  //post提交是封装在request中,post页面的编码格式是什么,在这一端就可以用什么格式来接收,和get不同,get方法需要经过容器的编码
//  request.setCharacterEncoding("GBK");//如果不设置,在getParameter返回的是iso编码格式的
  System.out.println("hello3="+new String(request.getParameter("user").getBytes("iso-8859-1"),"gbk"));
  System.out.println("hello3="+new String(request.getParameter("user").getBytes("GBK"),"GBK"));
  System.out.println("hello3="+new String(request.getParameter("user").getBytes("UTF-8"),"gbk"));
  System.out.println("hello2="+request.getParameter("user"));
}



个人理解:

get方法中:先是jsp页面把数据通过页面的编码格式转化到地址栏,然后发送给容器,容器在通过自己的编码格式,传给java端,也就是我们的程序,因此此时先需要用容器的编码格式获得字节,再转成页面的格式.

post方法: 数据通过页面的编码格式封装在request中,通过容器时转换成容器默认的,(自己目前不知道怎么改变容器默认的),传给java端.通过request.setCharacterEncoding()来改变成页面的.



但是对于get方法中中文浏览器总是以UTF-8发送,那如果页面设置成gbk,怎么让java不乱码?这个问题还未解决



server.xml
useBodyEncodingForURI="true"
这个参数扩展性更好,表示以页面的编码作为request默认编码.   ??????????????好像不对,带回公司验证



*******************************************

以下部分是我认为对上面能作出正确解释的:(摘自网上:源地址:http://www.iteye.com/topic/266705)





http://www.cnblogs.com/yencain/articles/1321386.html



http://www.iteye.com/topic/300656



http://www.iteye.com/topic/21680?page=1



-------------------------------------------------

关于JSP页面中的pageEncoding和contentType两种属性的区别: 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, 更有利亚洲区的文字 CJKV系JSP网页的开发和展示, (例pageEncoding=GB2312 不等于 contentType=utf-8)。 jsp文件不像.java,.java在被编译器读入的时候默认采用的是操作系统所设定的locale所对应的编码,比如中国大陆就是GBK,台湾就是BIG5或者MS950。而一般我们不管是在记事本还是在ue中写代码,如果没有经过特别转码的话,写出来的都是本地编码格式的内容。所以编译器采用的方法刚好可以让虚拟机得到正确的资料。 但是jsp文件不是这样,它没有这个默认转码过程,但是指定了pageEncoding就可以实现正确转码了。 举个例子: <%@ page contentType="text/html;charset=utf-8" %> 大都会打印出乱码,因为输入的“你好”是gbk的,但是服务器是否正确抓到“你好”不得而知。 但是如果更改为 <%@ page contentType="text/html;charset=utf-8" pageEncoding="GBK"%> 这样就服务器一定会是正确抓到“你好”了



======================

pageEncoding设置JSP源文件和响应正文中的字符集编码.
contentType设置JSP源文件的字符集编码和响应正文的MIME类型.

可见,pageEncoding和contentType都可以设置JSP源文件和响应正文中的字符集编码.但也有区别:

设置JSP源文件字符集时,优先级为   pageEncoding   >   contentType.都没有设置,默认ISO-8859-1.

设置响应输出的字符集时,优先级为   contentType   >   pageEncoding.都没有设置,默认ISO-8859-1;都设置了,以contentType为准.实际上,response.setContentType()就是根据contentType属性设置的.



========================

在JSP标准的语法中,如果pageEncoding属性存在,那么JSP页面的字符编码方式就由pageEncoding决定,否则就由contentType属性中的charset决定,如果charset也不存在,JSP页面的字符编码方式就采用默认的ISO-8859-1。


分享到:
评论

相关推荐

    自动控制原理实验报告册.doc

    - 实验原理简明扼要:避免大段摘抄教科书内容,重点阐述与本次实验相关的原理。 - 数据处理准确:计算过程需包含具体数值,避免只列出最终结果。 - 曲线图与数据一致:确保所绘制的曲线图与实验数据相符,并标注...

    唐都_TDPIT接口实验_程序清单

    该实验教程由西安唐都科教仪器开发有限责任公司版权所有,并明确声明未经书面许可,任何单位和个人不得擅自摘抄、复制全部或部分内容,并以任何形式传播。这表明了西安唐都科教仪器开发有限责任公司对该实验教程的...

    实验报告书写规范 (2).docx

    实验原理部分需要选择关键的理论依据进行摘抄,这部分应简明扼要,但要确保包含实验的核心理论。电路图的绘制是这部分的重要组成部分,它直观地展示了实验的物理模型,帮助读者理解实验设计和预期结果。 四、实验...

    计算机组成原理试验教程

    本书的版权属于西安唐都科教仪器开发有限责任公司所有,未经书面许可,任何单位和个人不得擅自摘抄、复制本实验教程的部分或全部内容,并以任何形式传播。这体现了出版社对知识产权保护的重视。 #### 三、教材内容...

    自然科学类图书《昆虫记》文学作品介绍好词好句摘抄鉴赏通用PPT优质模板.ppt

    总而言之,《昆虫记》以其独特的艺术风格和深邃的内涵,成为了世界文学宝库中不可或缺的一部分。它教育我们要尊重每一个生命,无论其多么微小,因为它们都是构成地球生物链不可或缺的环节。这部作品既是昆虫的赞歌,...

    足球联赛积分c++程序

    从网上摘抄的部分可能涉及了参考代码或思路,这在学习编程时是常见的做法,但理解并消化这些代码至关重要。如果有些部分难以理解,可能需要深入研究C++的相关概念或查阅更多资料。 【标签】:“足球” 在本项目中...

    A7630C-LASS-硬件设计手册-V1.00(1).pdf

    在手册的前言部分,芯讯通无线科技(上海)有限公司明确声明了该手册的版权所有,任何单位和个人不得擅自摘抄、复制本手册内容的部分或全部,并不得以任何形式传播,违反者将被追究法律责任。 在手册的目录部分,...

    团委工作范文校园读书节活动方案.doc

    在第一周,学生们被鼓励进行书籍摘抄和撰写读书感言,并在班级中出一期以读书为主题的黑板报,以此激发他们的阅读兴趣和表达欲望。第二周,通过讲故事和美文朗读竞赛活动,学生可以进一步提升自己的语言表达能力和...

    教学怎样写日记中小学PPT教案.pptx

    【教学怎样写日记中小学PPT教案】是一份...总的来说,这份教案提供了全面的日记写作指导,旨在激发学生的写作兴趣,培养他们观察生活、表达思想的习惯,同时融入了自然科学的学习,使日记写作成为综合性学习的一部分。

    信号与系统资料:微机考试回忆.doc

    - 编程部分,关注串行通信的初始化,熟悉实验中的相关程序语句。 - 与8253定时器的结合,理解如何计算分频系数以生成8251所需的脉冲。 4. **命令行参数** - 这部分考的是编程题,可能与书本上的例题相似。 - ...

    大学研究性论文范文.docx

    - **学习心得**:是个人对学习内容的理解和反思,包括观点、材料和结构,初学者可以从摘抄和分析开始,逐步发展到以个人观点为主导的写作。 在写作过程中,无论哪种类型的学术论文,都需要保持批判性思维,确保...

    三年级日记格式教学[1]PPT学习教案.pptx

    3. **日记类型**:包括观察日记(记录周围环境的变化)、活动日记(记录参与的活动)、心得日记(记录个人感悟)、摘录日记(摘抄感兴趣的内容)、剪贴日记(粘贴图片和文字)、实验日记(科学实验的记录)和信息...

    苏教小学语文三下习作日记PPT学习教案.pptx

    日记写作的类型多样,包括观察日记(记录观察到的现象)、活动日记(记录参与的活动)、心得日记(记录思考和感悟)、摘录日记(摘抄有价值的内容)、剪贴日记(结合图片和文字)、实验日记(科学实验的记录)以及...

    小学语文三年级上册家长会PPT学习教案.pptx

    在课文学习方面,要求孩子们能正确、流利、有感情地朗读,听写生字词,摘抄并背诵精彩的句子、段落以及古诗。这些活动旨在提高他们的记忆力和语言表达能力,同时增强对文本情感的理解。 书面作业是巩固学习成果的...

    七年级语文上册课程纲要.doc

    【课程背景】与【学情分析】中提到的七年级语文上册课程是针对河洛镇实验学校的七年级学生设计的义务教育必修课程,由禹志华老师在2018年8月编制。学生群体中,语文基础普遍较弱,尤其是男生,学生的学习能力和习惯...

    五年级语文上册 21《跨越百年的美丽》导学案2 冀教版 学案.doc

    5. 句子摘抄与分析:在【自主学习】部分,学生需找出关于居里夫人不同方面的描述,如实验条件、工作艰辛、人生贡献等,通过这些摘抄,加深对课文的理解。 6. 句子品析:在【合作探究】环节,学生需要深入理解“淡蓝...

Global site tag (gtag.js) - Google Analytics