热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

android和服务器的URLEncodedUtils乱码编码问题的解决方案

今天小编就为大家分享一篇关于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这个编码,这个编码会存在各种问题的。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接


推荐阅读
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • Vue 2 中解决页面刷新和按钮跳转导致导航栏样式失效的问题
    本文介绍了如何通过配置路由的 meta 字段,确保 Vue 2 项目中的导航栏在页面刷新或内部按钮跳转时,始终保持正确的 active 样式。具体实现方法包括设置路由的 meta 属性,并在 HTML 模板中动态绑定类名。 ... [详细]
  • QUIC协议:快速UDP互联网连接
    QUIC(Quick UDP Internet Connections)是谷歌开发的一种旨在提高网络性能和安全性的传输层协议。它基于UDP,并结合了TLS级别的安全性,提供了更高效、更可靠的互联网通信方式。 ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • 本文详细介绍了 BERT 模型中 Transformer 的 Attention 机制,包括其原理、实现代码以及在自然语言处理中的应用。通过结合多个权威资源,帮助读者全面理解这一关键技术。 ... [详细]
  • 国内BI工具迎战国际巨头Tableau,稳步崛起
    尽管商业智能(BI)工具在中国的普及程度尚不及国际市场,但近年来,随着本土企业的持续创新和市场推广,国内主流BI工具正逐渐崭露头角。面对国际品牌如Tableau的强大竞争,国内BI工具通过不断优化产品和技术,赢得了越来越多用户的认可。 ... [详细]
  • QBlog开源博客系统:Page_Load生命周期与参数传递优化(第四部分)
    本教程将深入探讨QBlog开源博客系统的Page_Load生命周期,并介绍一种简洁的参数传递重构方法。通过视频演示和详细讲解,帮助开发者更好地理解和应用这些技术。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 本周信息安全小组主要进行了CTF竞赛相关技能的学习,包括HTML和CSS的基础知识、逆向工程的初步探索以及整数溢出漏洞的学习。此外,还掌握了Linux命令行操作及互联网工作原理的基本概念。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文探讨了如何像程序员一样思考,强调了将复杂问题分解为更小模块的重要性,并讨论了如何通过妥善管理和复用已有代码来提高编程效率。 ... [详细]
  • python的交互模式怎么输出名文汉字[python常见问题]
    在命令行模式下敲命令python,就看到类似如下的一堆文本输出,然后就进入到Python交互模式,它的提示符是>>>,此时我们可以使用print() ... [详细]
  • 火星商店问题:线段树分治与持久化Trie树的应用
    本题涉及编号为1至n的火星商店,每个商店有一个永久商品价值v。操作包括每天在指定商店增加一个新商品,以及查询某段时间内某些商店中所有商品(含永久商品)与给定密码值的最大异或结果。通过线段树分治和持久化Trie树来高效解决此问题。 ... [详细]
  • 本文介绍了如何在具备多个IP地址的FTP服务器环境中,通过动态地址端口复用和地址转换技术优化网络配置。重点讨论了2Mb/s DDN专线连接、Cisco 2611路由器及内部网络地址规划。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
author-avatar
小变态徒
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有