为什么80%的码农都做不了架构师?>>>   

客户端访问服务器的页面时,填写相关信息并提交
————1————》
信息被封装到request对象中,封装时采用的是页面设置的编码格式,我们一般设置的都是UTF-8
设置页面编码格式
  1、设置 HTML 页面编码格式为 UTF-8
  <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
  2、设置 HTML 页面语言为中文
  <meta http-equiv="content-language" content="zh-CN" />
  3、设置 JSP 页面编码格式为 UTF-8
  <%@ page contentType="text/html;charset=UTF-8" %>
————2————》
服务器再解析出相关信息,默认采用的编码格式为ISO8859,所以就会出现乱码

可以看出问题就出现在服务器解析request对象中的信息采用的编码格式和之前的编码格式不一致造成的,所以我们只要设置一下服务器解析request对象时的编码格式也为UTF-8即可。
request.setCharacterEncoding("UTF-8");
需要注意的是:
    此方法只对POST请求方式下的乱码问题有效。
 
那对于GET方式的乱码问题,需要我们对“服务器在request对象解析出的乱码”再进行编码:
1、服务器不是以ISO8859进行解析的嘛,假如:
String username = request.getParameter("username");
此时username中保存的数据对应的是ISO 8859编码库中的信息
2、我们先找出username在此编码库中对应的信息:
username.getBytes("iso8859-1"); 
3、再以UTF-8的编码格式对其进行再解析:
username =  new String(username.getBytes("is08859-1"), "UTF-8");
4、这样此时的username中保存的数据就是以UTF-8编码的了,就不会出现乱码问题了

同样,在超链接地址后
<a href="/locationURL?username=中国">超链接</a>
所带的中文信息,也要以GET方式对应的方法来解决。
username =  new String(username.getBytes("is08859-1"), "UTF-8");

**************************************************************************************************
以下方法最好不要使用,最好使用上面所说的方法
**************************************************************************************************

另外:
    我们可以通过修改服务器的配置信息,来统一解决乱码,不论是哪种方式的请求,都可以搞的定,但是开发过程最好不要使用这种方式。
以Tomcat为例,我们可以修改conf目录下的server.xml文件:

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

可以为Connector增加相关属性:
URIEncoding="UTF-8"   设置服务器的编码格式

对于刚开始所说的
request.setCharacterEncoding("UTF-8");
只对POST方式有效,GET无效的问题,我们可以为Connector增加以下属性:
useBodyEncodingForURI="true"    就可以使GET方式下也使用UTF-8编码

转载于:https://my.oschina.net/lhplj/blog/386558

HttpServletRequest中文乱码相关推荐

  1. HttpServletRequest应用-获取请求参数及解决中文乱码

    一.介绍 在实际开发中,经常需要获取用户提交的表单数据,例如,用户名.密码.电子邮件等,为了方便获取表单中的请求参数,在HttpServletRequest接口的父类ServletRequest中,定 ...

  2. java servlet 参数乱码_JSPServlet处理参数中的中文乱码总结

    从form表单提交信息到一个JSP页面或者一个Servlet进行处理的时候,提交的中文信息若不加处理的话就会显示乱码,如一串???.现在通过一个例子来进行总结如下: 写一个用户信息提交页面,通过这个页 ...

  3. jquery.ajax的url中传递中文乱码问题的解决方法

    jquery.ajax的url中传递中文乱码问题的解决方法 JQuery JQuery默认的contentType:application/x-www-form-urlencoded 这才是JQuer ...

  4. 使用过滤器(Filter)解决请求参数中文乱码问题(复杂方式)

    前述: 在写这篇笔记之前,对笔记中的设计模式进行介绍: 本篇笔记中将要使用到的设计模式是:装饰(包装)设计模式 (1)装饰(包装)设计模式口诀: ①定义一个类,实现被装饰对象的接口 ②定义一个成员变量 ...

  5. 解决SpringMvc后台接收json数据中文乱码问题

    2019独角兽企业重金招聘Python工程师标准>>> 1.使用ajax从前台页面传输数据到后台controller控制器的时候,出现中文乱码(问号???). 之前在网上找了各种解决 ...

  6. Tomcat中文乱码问题的原理和解决方法

    为什么80%的码农都做不了架构师?>>>    Tomcat中文乱码问题的原理和解决方法 自从接触Java和JSP以来,就不断与Java的中文乱码问题打交道,现在终于得到了彻底的解决 ...

  7. Java Web项目中解决中文乱码方法总结

    一.了解常识: 1.UTF-8国际编码,GBK中文编码.GBK包含GB2312,即如果通过GB2312编码后可以通过GBK解码,反之可能不成立; 2.web tomcat:默认是ISO8859-1,不 ...

  8. Spring+MyBatis实践—中文乱码

    多种中文乱码问题及解决: jsp页面乱码 表单提交乱码 URL中文参数乱码 1.jsp页面乱码解决(2步): 新建jsp页面: <%@ page language="java" ...

  9. 获取请求参数通用方式|| 中文乱码问题||请求转发

    1. 获取请求参数通用方式:不论get还是post请求方式都可以使用下列方法来获取请求参数 1. String getParameter(String name):根据参数名称获取参数值    use ...

  10. ios请求头解决参数中文乱码_解决请求参数的中文乱码问题(get、post)

    2018-11-28 在web请求与响应中,会遇到乱码问题,比如填写表单数据时,难免会输入中文,姓名.公司名称等.由于HTML设置了浏览器在传递请求参数时,采用的编码方式是UTF-8,但在解码时采用的 ...

最新文章

  1. 大数据与智能算法(三-集疏运应用)-SMU在线学习笔记
  2. git 拉取远端仓库_git命令-远程仓库拉取、本地仓库更新、工作空间提交等等
  3. 基于python的科技论文_实地科研 | 上海财经大学 | 金融科技、商业分析、人工智能:机器学习、人工智能及其在金融科技中的应用(2021.1.25开课)...
  4. sass之mixin的全局引入(vue3.0)
  5. FreeRTOS内核实现01:列表与列表项实现
  6. 立创EDA元件转换为AD库封装(Altium Designer)
  7. 应用系统架构设计[转]
  8. vm12 pro 安装radhat6.3
  9. uboot移植——uboot配置过程详解
  10. 音视频基本概念:码率、比特率
  11. 删除Directory Opus后从快捷方式无法转到文件夹
  12. 高职高考计算机一级证,3+证书计算机一级证书难不难,都考哪些内容?
  13. Unity2D音游案例-节奏大师教程+源码+素材
  14. 人工智能-机器学习:对抗攻击与防御(Adversarial Attack and Defense)
  15. 浙江大学计算机考研最新,2017年浙江大学计算机考研复试分数线_浙江大学考研分数线...
  16. 涵盖多场景区块链与政务结合 应用前景广阔
  17. 第一次系统发版的过程(一)
  18. hostapd建立无线AP出现did not acknowledge association的解决办法
  19. c++ 数据结构和算法之刷无聊的面试题(1)-单链表
  20. 腾讯在乳腺癌影像AI诊断方向的探索

热门文章

  1. Wilcoxon秩和检验简介与MATLAB实现
  2. 排序算法专题-快速排序
  3. 机器学习-线性回归scikit-learn
  4. python_dataframe总结1
  5. 微信小程序学习总结(一)——程序文件内容
  6. linux以http方式搭建git服务器
  7. Android Gradle动态打32位或者64位的包
  8. Android的JNI【实战教程】2⃣️--AS下NDK环境配置及第一个工程
  9. oracle case grouping,ORACLE GROUPING函数的使用
  10. mongodb mysql 事务_让你的mongodb支持事务---升级到mongodb 4.0