美文网首页
Get与Post编码问题

Get与Post编码问题

作者: vpt | 来源:发表于2016-04-21 20:57 被阅读0次

引子

我们在测试的时候经常遇到前后台文件的编码明明都一样,但get或post到后台,或者响应数据到前台后,接受到的中文字符却都是乱码,而这个时候如果恰巧对编码没有一定的理解那么真是一种丈二和尚摸不着头脑的感觉了。

那么就说下编解码的问题,我们知道浏览器与服务器后台之间通讯是通过传输字节流也就是一堆0和1,所以我们浏览器就会按照你html的编码格式(如utf-8),对照编码表将字符编码成字节流,然后再传输给后台(servlet),所以这个时候后台就需要将其解码还原成我们需要的字符,问题就出现在这里了。

举一个例子:html与Servlet文件格式都为UTF-8的情况,怎么才能正确在后台显示中文呢。

post方法

Post的解决方法相对简单。
post的数据是存储在http协议的实体内容里的。
而HttpServletRequest提供了一个setCharacterEncoding()的方法可以直接设置编解码格式。

request.setCharacterEncoding("utf-8");

这样我们再通过getParameter()方法获取post的内容时候就可以正确显示了。

Get方法的解决措施

Get有所不同。
我们知道get方法传输的数据是存储在HTTP协议的请求行 'uri'(也可以理解为url)中的。
但是tomcat服务器默认是把uri中部分的字节流直接当成"iso-8859-1"编解码的。
我们获得get的数据一般通过
Stirng paramValue=request.getParameter(paramName);
来获得我们需要的数据值。
所以当然会出问题了,因为iso-8859-1不支持中文嘛。

我们这个时候只能先把得到的乱码数据手动用iso-8859-1的编码方式解码得到字节流,然后再把字节流按照utf-8码表编码成字符,即得到我们要的正确字符!

方法如下:

//手动解码
paramValue = paramValue.getBytes("iso-8859-1");
//再次编码
paramValue = new   String(paramValue ,"utf-8");

然后就搞定了!
这个时候控制台输出一下看到的就是中文而不是乱码了。

相关文章

  • Get与Post编码问题

    引子 我们在测试的时候经常遇到前后台文件的编码明明都一样,但get或post到后台,或者响应数据到前台后,接受到的...

  • Web简单基础知识

    HTML URL URL编码 HTTP GET与POST

  • get、post方式传送数据的乱码问题解决方案

    get/post方式的编码问题解决方案 提交数据中文乱码问题: post提交方式,想不乱码,只需要设置reques...

  • Alamofire get请求时出现GET method mus

    问题 :封装方法时编码统一写死了 写成 ->JSONEncoding.default (post请求用),get...

  • input标签的相关使用

    form)action动作 method提交方式 (post get)enctype编码方式id="userna...

  • post And get

    post And get post 与 get 请求的区别: 相同点:post和get都属于tcp协议传输。 po...

  • [JSP]JSP中提交参数编码问题

    在没有任何拦截器和过滤器的情况下: 通过Get方法提交的编码与JSP文件编码相同 通过POST方法提交的是ISO-...

  • Http(二)

    一、GET与POST请求 POST也可以跟GET一样获取到资源(图片) GET获取图片—— POST在html中可...

  • HTTP协议- Get 和 Post 的区别

    Http 请求方法中最最常见的两种方法为 get和post。 我们常常会被问到这样一个问题: get 与 post...

  • AJAX

    创建 XMLHttpRequest 对象 向服务器发送请求 GET 还是 POST? 与 POST 相比,GET ...

网友评论

      本文标题:Get与Post编码问题

      本文链接:https://www.haomeiwen.com/subject/kfgtrttx.html