【发布时间】:2013-07-11 12:49:48
【问题描述】:
我正在尝试在 C#(.net 4)中的客户端程序上压缩一个大字符串,并使用 PUT 请求将其发送到服务器(django、python 2.7)。 理想情况下,我想在两端都使用标准库,所以我尝试使用 gzip。
我的 C# 代码是:
public static string Compress(string s) {
var bytes = Encoding.Unicode.GetBytes(s);
using (var msi = new MemoryStream(bytes))
using (var mso = new MemoryStream()) {
using (var gs = new GZipStream(mso, CompressionMode.Compress)) {
msi.CopyTo(gs);
}
return Convert.ToBase64String(mso.ToArray());
}
}
python代码是:
s = base64.standard_b64decode(request)
buff = cStringIO.StringIO(s)
with gzip.GzipFile(fileobj=buff) as gz:
decompressed_data = gz.read()
它几乎可以工作了,但是输出是:{▯"▯c▯h▯a▯n▯g▯e▯d▯"▯} 当它应该是 {"changed"} 时,即每个其他字母都很奇怪. 如果我通过 decompressed_data[::2] 取出所有其他字符,那么它可以工作,但它有点像黑客,显然还有其他问题。
我想知道是否需要对 PUT 请求进行 base64 编码?这只需要 POST 吗?
【问题讨论】:
-
cStringIO.StringIO 理解 unicode 吗?
标签: c# python django compression gzip