关于GZIP压缩字符串的问题。

cklxh 2014-06-08 11:30:09
我有一段JAVA代码。


private static String a(String... paramVarArgs) throws Exception {
StringBuilder localStringBuilder = new StringBuilder();
for (int i = 0;; i++) {
if ((paramVarArgs == null) || (i >= paramVarArgs.length)) {
return localStringBuilder.toString();
}
String str = paramVarArgs[i];
ByteArrayOutputStream localByteArrayOutputStream = new ByteArrayOutputStream();
GZIPOutputStream localGZIPOutputStream = new GZIPOutputStream(localByteArrayOutputStream);
localGZIPOutputStream.write(str.getBytes("UTF-8"));
localGZIPOutputStream.close();
localStringBuilder.append(URLEncoder.encode(localByteArrayOutputStream.toString("ISO-8859-1"),"UTF-8"));
if (i < -1 + paramVarArgs.length) {
localStringBuilder.append('|');
}
}
}




a("a","b")
得到的结果是

%1F%C2%8B%08%00%00%00%00%00%00%00K%02%00%C3%B9%C3%AF%C2%BEq%01%00%00%00|%1F%C2%8B%08%00%00%00%00%00%00%00K%04%00C%C2%BE%C2%B7%C3%A8%01%00%00%00

我需要把它变成C#代码,于是我写了下面一段。



private static string a(string[] paramVarArgs)
{
StringBuilder localStringBuilder = new StringBuilder();
for (int i = 0; ; i++)
{
if ((paramVarArgs == null) || (i >= paramVarArgs.Length))
{
return localStringBuilder.ToString();
}
string str = paramVarArgs[i];
MemoryStream localByteArrayOutputStream = new MemoryStream();
GZipStream localGZIPOutputStream = new GZipStream(localByteArrayOutputStream, CompressionMode.Compress);
byte[] b1 = Encoding.UTF8.GetBytes(str);
localGZIPOutputStream.Write(b1, 0, b1.Length);
localGZIPOutputStream.Close();
string s1 = Encoding.GetEncoding("ISO-8859-1").GetString(localByteArrayOutputStream.ToArray());

localStringBuilder.Append(UrlEncode(s1, Encoding.UTF8));
if (i < -1 + paramVarArgs.Length)
{
localStringBuilder.Append('|');
}
}
}




a("a","b")得到的结果是
%1F%C2%8B%08%00%00%00%00%00%04%00%C3%AD%C2%BD%07%60%1CI%C2%96%25%26%2Fm%C3%8A%7B%7FJ%C3%B5J%C3%97%C3%A0t%C2%A1%08%C2%80%60%13%24%C3%98%C2%90%40%10%C3%AC%C3%81%C2%88%C3%8D%C3%A6%C2%92%C3%AC%1DiG%23)%C2%AB*%C2%81%C3%8AeVe%5Df%16%40%C3%8C%C3%AD%C2%9D%C2%BC%C3%B7%C3%9E%7B%C3%AF%C2%BD%C3%B7%C3%9E%7B%C3%AF%C2%BD%C3%B7%C2%BA%3B%C2%9DN'%C3%B7%C3%9F%C3%BF%3F%5Cfd%01l%C3%B6%C3%8EJ%C3%9A%C3%89%C2%9E!%C2%80%C2%AA%C3%88%1F%3F%7E%7C%1F%3F%22%26%C3%BF%0F%C3%B9%C3%AF%C2%BEq%01%00%00%00|%1F%C2%8B%08%00%00%00%00%00%04%00%C3%AD%C2%BD%07%60%1CI%C2%96%25%26%2Fm%C3%8A%7B%7FJ%C3%B5J%C3%97%C3%A0t%C2%A1%08%C2%80%60%13%24%C3%98%C2%90%40%10%C3%AC%C3%81%C2%88%C3%8D%C3%A6%C2%92%C3%AC%1DiG%23)%C2%AB*%C2%81%C3%8AeVe%5Df%16%40%C3%8C%C3%AD%C2%9D%C2%BC%C3%B7%C3%9E%7B%C3%AF%C2%BD%C3%B7%C3%9E%7B%C3%AF%C2%BD%C3%B7%C2%BA%3B%C2%9DN'%C3%B7%C3%9F%C3%BF%3F%5Cfd%01l%C3%B6%C3%8EJ%C3%9A%C3%89%C2%9E!%C2%80%C2%AA%C3%88%1F%3F%7E%7C%1F%3F%22%C2%B2%C3%BF%07C%C2%BE%C2%B7%C3%A8%01%00%00%00


好像最终得到的结果不一样,,求教 怎么会事儿呢?
...全文
119 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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