get/post 提交乱码问题解决(未使用过滤器)——Servlet解决

前提:HttpServletRequest request

/**
*post提交参数

 */

request.setCharacterEncoding("utf-8");

/**
 * 对get提交参数处理

 */

// 1)得到原来的参数
String value = request.getParameter(name); // iso-8859-1
// 2)手动解码
if ("GET".equals(request.getMethod())) {

         value = new String(value.getBytes("iso-8859-1"), "utf-8");
}

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

之前自己看视频学习根本没有听懂,只是现拿现用,时间一长就没有一点印象。

现在(2018/8/13)在达内培训时,再次遇到乱码问题,(前天)开始没细想,后来(今天)想了想前两次基本上差不多,都让自己敷衍过去了,所幸现在自己琢磨了点,多多少少比之前理解的透彻了。(以下为copy的笔记)

**请求参数中的乱码问题 -- 编码时和解码时使用码表不一致造成的
                * 浏览器使用什么码表打开当前页面, 就使用什么码表来发送请求参数. 因此我们可以通过控制浏览器打开页面时使用的码表, 而间接控制浏览器发送数据使用的码表

                * tomcat服务器默认使用的是ISO8859-1码表来处理浏览器发送过来的数据, 而这个码表中没有中文汉字, 所以处理中文这是必然会造成乱码

                * request.setCharacterEncoding("utf-8"); 这个方法可以指定服务器使用什么码表来处理请求, 从而解决乱码问题  但是必须注意把这行代码写在获取任何参数的代码之前

                * request.setCharacterEncoding("utf-8");这个方法是用来通知服务器使用什么编码来处理请求实体内容中的数据,  POST提交的参数刚好在请求实体内容中, 所以这个方法可以处理POST提交的乱码问题. 
                而GET提交发送的数据是在请求行的请求资源路径后面, 所以这个方法不起作用

                那如何解决GET提交的乱码问题呢? -- 根据乱码产生的原理, 可以手动的编解码来解决乱码问题
                username = new String(username.getBytes("iso-8859-1"), "utf-8");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值