一、JSP/Servlet中的几个编码的作用
        在JSP/Servlet中有4个地方可设置编码(例如以下)。当中前两个仅仅能用于JSP中,后两个可用于JSP和Servlet 中。 
        1、pageEncoding="UTF-8":设置JSP编译成Servlet时使用的编码。 
              JSP在server上是要先被编译成Servlet的。pageEncoding="UTF-8"的作用就是告诉JSP编译器在将JSP文件编译成Servlet时使用的编码。通常。在JSP内部定义的字符串(直接在JSP中定义,而不是从浏览器提交的数据)出现乱码时。非常多都是因为该參数设置错误引起的。比如,你的JSP文件是以GBK为编码保存的,而在JSP中却指定pageEncoding="UTF-8",就会引起JSP内部定义的字符串为乱码。

另外,该參数另一个功能。就是在JSP中不指定contentType參数,也不使用response.setCharacterEncoding方法时。指定对server响应进行又一次编码的编码

2、contentType="text/html;charset=UTF-8":指定对server响应进行又一次编码的编码。 
              在不使用response.setCharacterEncoding方法时。用该參数指定对server响应进行又一次编码的编码。

3、request.setCharacterEncoding(“UTF-8”):设置对client请求进行又一次编码的编码。 
              该方法用来指定对浏览器发送来的数据进行又一次编码(或者称为解码)时,使用的编码。

4、response.setCharacterEncoding("UTF-8"):指定对server响应进行又一次编码的编码。

server在将数据发送到浏览器前。对数据进行又一次编码时,使用的就是该编码。

二、浏览器怎样对接收和发送的数据进行编码?

response.setCharacterEncoding("UTF- 8")的作用是指定对server响应进行又一次编码的编码。同一时候,浏览器也是依据该參数来对其接收到的数据进行又一次编码(或者称为解码)。

可做个实验。在JSP中设置response.setCharacterEncoding("UTF- 8"),在IE中显示该页面时,在IE的菜单 -- "查看" -- "编码"中可看到是" Unicode(UTF-8)"。 
        浏览器在发送数据时,对URL和參数会进行URL编码,对參数中的中文,浏览器也是使response.setCharacterEncoding參数来进行URL编码的. 
        浏览器在接收server数据和发送数据到server时所使用的编码是同样的。默认情况下均为JSP页面的response.setCharacterEncoding參数(或者contentType和 pageEncoding參数)。我们称其为浏览器编码。当然。在IE中能够改动浏览器编码(在IE的菜单 -- "查看" -- "编码” 中修 改)。但通常情况下,改动该參数会使原本正确的页面中出现乱码。

三、server怎样对接收和发送的数据进行编码?
        1、对于发送数据。server依照response.setCharacterEncoding — contentType — pageEncoding的优先顺序,对要发送的数据进行编码。 
        2、对于接收数据,分三种情况(浏览器直接用URL提交的数据,用表单的GET方式提交的数据、用表单的POST方式提交的数据)。各种WEBserver对这三种方式的处理不同样,以Tomcat5.0为例。

不管使用哪种方式提交。若參数中包括中文,浏览器都会使用当前浏览器编码对其进行URL编码。 
        对于表单中POST方式提交的数据,仅仅要在接收数据的JSP中正确request.setCharacterEncoding參数,即将对client请求进行又一次编码的编码设置成浏览器编码(默认情况下浏览器编码就是在响应该请求的JSP页面中response.setCharacterEncoding设置的值)。就可得到正确的參数编码。
        对于URL提交的数据和表单中GET方式提交的数据,在接收数据的JSP中设置request.setCharacterEncoding參数是不行的。由于在Tomcat5.0中,默认情况下使用ISO- 8859-1对URL提交的数据和表单中GET方式提交的数据进行又一次编码(解码)。而不使用该參数对URL提交的数据和表单中GET方式提交的数据进行又一次编码(解码)。要解决该问题,应在Tomcat的配置文件(server.xml)的Connector标签中设置useBodyEncodingForURI(表示是否用request.setCharacterEncoding 參数对URL提交的数据和表单中GET方式提交的数据进行又一次编码,默觉得false。Tomcat4.0中默觉得 true)或 URIEncoding(指定对全部GET方式请求(包含URL提交的数据和表单中GET方式提交的数据)进行统一的又一次编码(解码)的编码)属性。

四、怎样防止中文乱码 
        1、对于同一个应用最好统一编码,推荐为UTF-8 
        2、正确设置JSP的pageEncoding參数 
        3、在全部的JSP/Servlet中设置contentType="text/html;charset=UTF-8"或response.setCharacterEncoding("UTF-8")。从而间接实现对浏览器编码的设置。

4、 对于请求,可用过滤器或在每一个JSP/Servlet中设置request.setCharacterEncoding("UTF-8")。

同一时候,要改动Tomcat的默认配置,推荐设置useBodyEncodingForURI=“true”(获取參数值时先得设置request.setCharacterEncoding(“UTF-8”)),也可设置URIEncoding=“ UTF-8”(有可能影响其它应用,故不推荐)

转载于:https://www.cnblogs.com/blfshiye/p/5067846.html

JSP/Servlet-----charset 、pageEncoding差别相关推荐

  1. JSP/Servlet基础语法

    相关学习资料 http://my.oschina.net/chape/blog/170247 http://docs.oracle.com/cd/E13222_01/wls/docs81/webapp ...

  2. JSP+Servlet+Ajax实现用户增删改查的例子

    一.数据库设计 用户表User 已有的测试数据 二.Java代码编写 Java EE的架构一般分为以下五层: ①.Domain ②.DAO ③.Service ④.Controller ⑤.View ...

  3. jsp servlet示例_Servlet和JSP中的文件上传示例

    jsp servlet示例 使用Servlet和JSP将文件上传到服务器是Java Web应用程序中的常见任务. 在对Servlet或JSP进行编码以处理文件上传请求之前,您需要了解一点有关HTML和 ...

  4. app登录界面背景 css_计算机毕业设计中Java web实现简登录页面(MyBatis+jsp+servlet+html+css+javascript)...

    点击上方"蓝字",关注我们. 本文利用MyBatis+jsp+servlet+html+css+javascript实现了一个简单的登录页面.对用户输入的用户名和密码就行校验,校验 ...

  5. JSP/Servlet中的几个编码的作用

    在JSP/Servlet 中主要有以下几个地方可以设置编码,pageEncoding="UTF-8".contentType="text/html;charset=UTF ...

  6. 【转】jsp+servlet和SSM分别是如何实现文件上传(示例)

    原文地址:https://blog.csdn.net/niceliusir/article/details/78453560 以下是jsp+servlet和SSM分别是如何实现文件上传的方法示例 两种 ...

  7. jquery ajax示例_jQuery AJAX JSP Servlet Java示例

    jquery ajax示例 Ajax in Java JSP Servlet based web applications are very common. Recently I have writt ...

  8. 基于jsp servlet javabean的学生管理系统

    日期:2019/10/24 该学生管理系统基于jsp+servlet+javabean,使用MVC模式,是一个很基础的学生管理系统,由于这是本学期的课程大作业,所以现在还没有完全写完,这篇博文会根据进 ...

  9. JSP+servlet+mysql个人博客系统

    个人博客系统 个人博客系统主要功能实现:登录注册,日志模块,照片模块,评论模块,留言模块. 分为前台界面部分和后台管理部分. 实现了上传头像功能以及分页显示功能. 开发技术:JSP+Servlet+J ...

  10. 简易图书管理系统(主要是jsp+servlet的练习),基于jsp+servlet的图书管理系统

    jsp+Servlet图书管理系统第一版的第一次更新:免费源码下载,停更,自行下载即可,谢谢:http://download.csdn.net/detail/biexiansheng/9877270 ...

最新文章

  1. 现代谱估计:Blackman-Tukey 相关图
  2. softmax函数_干货 | 浅谈 Softmax 函数
  3. 八、深入Go 编程语言接口
  4. (转)C/C++ Linux 程序员必须了解的 10 个工具
  5. ABAP并发计算的一个实例
  6. linux 进程调度源码分析,Linux调度器源码分析
  7. 如何在同一台服务器上安装多套通达OA
  8. [转]将西部数据 My Passport Wireless 移动存储连接到任何支持的云存储上
  9. python经典实例-python经典实例
  10. JMH在性能测试中的使用
  11. ue4使用Niagara粒子实现下雨效果,使用蓝图调节雨量
  12. itan:request-response简介
  13. 使用 Abp.Zero 搭建第三方登录模块(四):微信小程序开发
  14. 编译原理-语法制导翻译、后缀表达式、三元、四元
  15. Vue关于pdf展示问题——第三方电子签章不能正常展示
  16. 我是小小志愿者——国际志愿者日线上宣传活动
  17. HTML5(李炎恢)学习笔记四 ------------- HTML5元素(中)
  18. 计算机发展的五个阶段那个是转折点,计算机网络的发展有哪几个转折点
  19. JavaWeb——BootStrap_7/14
  20. 计算机在英语口语教学中的应用,计算机在英语口语与听力教学中的应用.doc

热门文章

  1. IT人喝酒不同岗位不同姿态,最服运维!
  2. Linux 运维工程师学习成长路线上要经历哪四个阶段?
  3. 你可能不知道的 AS 小技巧之「Extract Resource」
  4. 科学计算机统计模式中中间数据输错怎么办,科学计算器在统计功能中如何清除以前不需要的数据?...
  5. socket.io 消息发送
  6. Python_Bool
  7. 51Nod-1259-整数划分 V2
  8. UVALive - 7267 Mysterious Antiques in Sackler Museum
  9. 学习过程,简单记录,不求详尽,看懂就行,格式随意,高效学习
  10. pandas 中的模糊匹配