关于Android解析Webservice数据乱码的问题

猴子搬来的救兵Castiel 2012-03-28 08:19:38
小弟在做一个项目,项目用的是.net编写的WebService服务器,然后对数据进行Gzip加密才处理,我这边用Ksoap2组件进行WebService解析,然后下载数据使用。但是由于WebService服务器端用的是Unicode编码进行压缩,所以我这边接收后出现了乱码,我把文字编码分别设置为"utf-8","utf-16","GBK","gb2312","ISO8895-1"等等吧,都试过,都不行。解析后乱码如下:
<��?��x��m��l�� ��v��e��r��s��i��o��n��=��"��1��.��0��"�� ��e��n��c��o��d��i��n��g��=��"��u��t��f��-��1��6��"��?��>��
��
我们这边服务器端用.net进行字符编码,我把源代码贴出来大家分析一下:
#region 对字符串的压缩和解压缩函数
public static string Compress(string uncompressedString)
{
byte[] bytData = System.Text.Encoding.Unicode.GetBytes(uncompressedString);
MemoryStream ms = new MemoryStream();
using (Stream s = new ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream(ms))
{
s.Write(bytData, 0, bytData.Length);
s.Close();
}
byte[] compressedData = (byte[])ms.ToArray();
ms.Close();
return System.Convert.ToBase64String(compressedData, 0, compressedData.Length);
}
我这边使用的Ksoap2进行数据接收、使用unGzip2进行解压,然后转码,但是当我查看打印后的解码字符串,却发现是乱码,我的Android代码如下:
------省略前面的Ksoap2链接代码:
if (envelope.getResponse() != null) {
SoapObject result = (SoapObject) envelope.getResponse();
int count = result.getPropertyCount();
if (count == 2) {
String schemezip = result.getProperty(0).toString();
String datazip = result.getProperty(1).toString();
byte[] buff01 = ZipUtils.unBZip2(Base64.decode(schemezip
.getBytes()));
String dtScheme = new String(buff01, "utf-8");
byte[] buff02 = ZipUtils.unBZip2(Base64.decode(datazip
.getBytes()));
String dtScheme2 = new String(new String(buff02, "utf-8"));
这里我发现dtScheme和dtSchem2两个字符串变量都是乱码,请问大家我该怎么办??
...全文
593 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jark2008 2012-03-28
  • 打赏
  • 举报
回复
我也遇到同样问题。

80,353

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧