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”

时间: 2024-11-09 15:43:37

android 和服务器的URLEncodedUtils乱码编码问题的相关文章

Android studio运行时乱码 编码问题 閿欒: 缂栫爜UTF-8鐨勪笉鍙槧灏勫瓧绗?

Android studio运行时乱码 编码问题 閿欒: 缂栫爜UTF-8鐨勪笉鍙槧灏勫瓧绗?

访问Tomcat服务器返回数据乱码

前序: 在网络中,数据的传输,最常用的格式有两种:XML和JSON . 今天在做一个app版本更新检查.流程是: 1.Andriod客户端 向 Tomcat服务器 发起Http请求. 2.服务器响应并返回数据.返回的数据中,包含了新版app的特性和更新内容.并通过一个Dialog 对话框的形式,来告知用户,新版的app作了那些方面的改进.也就是调用dialog.setMessage()来设置消息内容,结果发现全是乱码. 3.之前一直没遇到这种情况,后来在QQ群了问了才知道,原来这个涉及到了编码的

[Android]Samba服务器在Ubuntu下的配置与Windows系统间的数据共享

安装Samba 安装sambasudo apt-get install samba[编辑]Kubuntu 安装系统设置的共享模块sudo apt-get install kdenetwork-filesharing[编辑]配置 1.windows 访问 ubuntu 第一步创建共享目录: 比如要创建/home/用户名/share首先创建这个文件夹 (这个用户名就是你的用户名,为了方便易懂我才这样写的,到时记得自己改啊) 代码:mkdir /home/用户名/share (新建share文件夹)c

使用多字节字符集的跨平台(PC、Android、IOS、WP)编码/解码方法

随着移动端的发展,跨平台已成为通讯架构设计的重要考虑因素,PC.Android.IOS.WP等跨多平台间的数据通讯,必然要解决字符编码/解码的问题. 多字节字符集MBCS不是跨平台的首选字符集,面向跨平台.国际化的推荐字符集肯定是UNICODE. 写VC的人都知道,在以前VC++6.0中默认的字符集是多字节字符集,而VS2005及以后默认的字符集是Unicode,VS2013中默认不再对多字节字符串进行支持. 但对很多较早的服务端项目,依然使用的是多字节字符集,不过使用多字节字符集依然可以实现跨

文件乱码, 编码转换

文件乱码, 编码转换 来源: http://bbs.csdn.net/topics/390134311 查看文件编码 enca FILENAME GBK 转 UTF8 iconv -f GBK -t UTF-8 INFILE -o OUTFILE 目录名乱码 convmv -f GBK -t UTF-8 [选项] FILENAME 选项 -r 递归处理子文件夹 –notest 真正进行操作, 请注意在默认情况下是不对文件进行真实操作的, 而只是试验 –list 显示所有支持的编码 –unesca

android 向服务器Get和Post请求的两种方式,android向服务器发送文件,自己组装协议和借助第三方开源

/** * @author [email protected] * @time 20140606 */ package com.intbird.utils; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream

Android 与服务器的通信方式

- Android 与服务器的通信方式主要有两种,一种是http 通信 ,一种是socket 通信. 两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户端向服务器发送请求后,服务器端才能向客户端返回数据.而Socket通信则是在双方建立起连接后就可以直接进行数据的传输,在连接时可实现信息的主动推送,而不需要每次由客户端想服务器发送请求. 那么,什么是socket?Socket又称套接字,在程序内部提供了与外界通信的端口,即端口通信.通过建立socket连接

CRT远程连接服务器字符输出乱码解决一例

环境: 服务器:Centos 6.2 远端:win 7 CRT版本:7.1.1 现象回顾: 1.服务器端:中文字符显示正常,如下: 2.CRT连接,出现乱码,如下图所示: 3.对CRT设置调整,如下: Options -> Session Options -> Appearance -> Font -> 新宋体 ->  字符集:中文GB2312 -> Character encoding:UTF-8 4.修改后重新执行操作,如下图所示: ****************

Android与服务器通信的方法之一(json)效率不高安全性不好

http通信,以xml或者json为载体,相互通信数据. Android对于http的网络通信,提供了标准的java接口--httpURLConnection接口,以及apache的接口--httpclient接口.其中我自己用的比较多的而是httpclient这个接口,因为它的功能更为丰富很有效. 同时http通信也分为post方式和get的方式,两个相比较的话,post传送的数据量比较大,安全性也比较高.因此在做数据查询时,我会用get方式:而在做数据添加.修改或删除时,我就用Post方式