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

作者:双斜杠少年 时间:2021-11-19 08:13:12 

在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这个编码,这个编码会存在各种问题的。

来源:https://blog.csdn.net/u012373815/article/details/44699585

标签:android,服务器,传输中文,乱码
0
投稿

猜你喜欢

  • C语言字符串函数入门

    2021-07-22 17:10:15
  • android自定义imageview实现圆角图片

    2023-05-12 07:12:07
  • 利用Spring Session和redis对Session进行共享详解

    2021-10-18 18:22:45
  • 解决Java API不能远程访问HBase的问题

    2023-11-27 04:17:48
  • Java基础教程之String深度分析

    2022-08-19 05:42:15
  • JAVA JDK8 List获取属性列表

    2023-04-12 04:32:42
  • c#中值类型和引用类型的基础教程

    2021-10-20 18:03:41
  • C#值类型、引用类型中的Equals和==的区别浅析

    2022-09-05 23:04:24
  • Java初学之继承与多态

    2022-11-29 15:13:04
  • Java开发利器之Guava Cache的使用教程

    2022-03-20 19:22:02
  • c#同步两个子目录文件示例分享 两个文件夹同步

    2022-01-25 05:03:03
  • Android编程之菜单实现方法

    2023-12-21 16:41:24
  • java容器详细解析

    2023-08-23 16:13:38
  • C#实现Menu和ContextMenu自定义风格及contextMenu自定义

    2022-01-03 04:09:30
  • C#知识整理

    2021-08-02 18:24:26
  • 在Winform和WPF中注册全局快捷键实现思路及代码

    2023-03-13 23:00:25
  • java中fork-join的原理解析

    2023-12-13 08:49:16
  • java中的控制结构(if,循环)详解

    2022-05-13 19:18:59
  • Java使用TCP套接字实现多人聊天功能详解

    2023-12-16 15:42:40
  • Java使用Apache.POI中HSSFWorkbook导出到Excel的实现方法

    2022-05-24 17:14:13
  • asp之家 软件编程 m.aspxhome.com