小弟在做一个项目,项目用的是.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两个字符串变量都是乱码,请问大家我该怎么办??