脚本宝典收集整理的这篇文章主要介绍了android和服务器的URLEncodedUtils乱码编码问题的解决方案,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
在android开发中我们常常遇到与到乱码问题,遇到乱码问题首先我们要先检查两端编码格式是否一致!
一般我们提交数据用get 和post方法,这两种方法在上传中有con.setRequestProperty("Charset", "UTF-8");
和httppost.setEntITy(new UrlencodedFormEntity(数据,"UTF-8"));
这两中方式来确定编码方式服务器端有request.setCharacterEncoding("UTF-8");response.setCharacterEncoding("UTF-8");来确定响应的编码格式。这样一般是不会出现乱码,如果出现乱码我们还可以建立一个过滤器来过滤乱码,在这里我不讲过滤器,改天再单独说一下过滤器。
今天我想说的是关于在Post传递参数,在路径后+?+参数传递方式,然后传递后的接受乱码问题。
首先我们安卓端要封装数据String str=URLEncodedUtils.format( 封装好的Parameters数据,"UTF-8"); 然后默认utf-8编码,然后HttpPath.FABU_PATH+"?"+str 把数据接在路径下边用post方式提交。在这里用了URLEncodedUtils将数据编码了。
接下来说的是服务器接受问题。服务器接受数据后会进行默认的转码,Tomact的默认转码格式是ISO_8859-1 所有我们要再次转码。需要两次转码,下边就是服务器转码代码
String=new String(request.getParameter("runame").getBytes("ISO_8859-1"),"UTF-8");
那么用URLEncodedUtils编码发送数据的一套代码如下
安卓:String str=URLEncodedUtils.format( 封装好的Parameters数据,"UTF-8");
java服务器: String=new String(request.getParameter("runame").getBytes("ISO_8859-1"),"UTF-8");
runame是封装好的数据中的一个字段;
下面是关于url解码的一些东西:
第一种方式指定编码UTF-8
传递页面
URLEncoder.encode(name,"UTF-8")
获取页面
String name=new String(request.getPatameter(name).getBytes("ISO_8859-1"),"UTF-8");
或者传递页面
URLEncoder.encode(name);
获取页面
String name=new String(request.getPatameter(name).getBytes("ISO_8859-1));
第二种方式是没有指定编码的,按平台默认的编码。
不能写成传递页面
URLEncoder.encode(name,"UTF-8")
获取页面
String name=new String(request.getPatameter(name).getBytes("ISO_8859-1));
所以只能按第一或者第二种形式,java推荐我们用第一种指定编码“utf-8”
今天折腾了两个小时就为了解决这个中文乱码问题。
下面是解决代码:
服务器端:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentTyPE("text/htML"); response.setCharacterEncoding("utf-8"); PRintWriter out = response.getWriter(); request.setCharacterEncoding("utf-8"); ......(此处省去操作数据代码) }
客户端:
request.setEntity(new UrlEncodeDFormEntity(params, HTTP.UTF_8));
不要理params,这个是发送给服务器的数据包。主要是HTTP.UTF_8
问题就解决了。不要搞GBK这个编码,这个编码会存在各种问题的。
总结
以上是脚本宝典为你收集整理的android和服务器的URLEncodedUtils乱码编码问题的解决方案全部内容,希望文章能够帮你解决android和服务器的URLEncodedUtils乱码编码问题的解决方案所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。