gpt4 book ai didi

c# - 为 QueryString 压缩大约 1000 字节的文本

转载 作者:太空狗 更新时间:2023-10-29 22:15:19 24 4
gpt4 key购买 nike

我想创建一种机制(在 C# 中),其中来自 QueryString 的文本显示在网站上。

例如,在 C# 中我可能真的会这样做;

public void Page_Load(blah)
{
litSomething.text = Reques.QueryString["msg"];
}

假设消息是用英文写的(允许 UTF8 会更好),并且不超过 1000 个字符。我想尽可能地压缩此文本,并且仍然能够将它放在 QueryString 中。

我们可以根据需要预定义尽可能多的字典术语(有理由吗?)。服务器端代码将对消息进行编码和解码。

(显然,我将添加所有常用的 XSS 保护、HttpUtitlity.HtmlEncode 等类型的东西。指向免费字典资源的指针也很好!)

任何提示、建议、源代码?在你问之前,这不是我的作业!

更新
感谢您的建议。我想将其设为 GET,以便人们使用 IM/电子邮件 URL。我按照 bit.ly 的思路思考,这本身也是一种作弊。不过,我希望这是一个通用的“短文本压缩”问题。

最佳答案

您可以将字符串编码为 UTF-8,以便获得可以压缩的字节数组。结果也是一个字节数组,所以你可以使用 Base-64 编码将其作为字符串获取:

private static string Compress(string data) {
using (MemoryStream ms = new MemoryStream()) {
using (GZipStream zip = new GZipStream(ms, CompressionMode.Compress, true)) {
zip.Write(Encoding.UTF8.GetBytes(data), 0, data.Length);
}
return Convert.ToBase64String(ms.ToArray());
}
}

解压正好相反:

private static string Decompress(string data) {
using (MemoryStream ms = new MemoryStream(Convert.FromBase64String(data))) {
using (GZipStream zip = new GZipStream(ms, CompressionMode.Decompress, true)) {
using (BinaryReader reader = new BinaryReader(zip)) {
return Encoding.UTF8.GetString(reader.ReadBytes(10000));
}
}
}
}

关于c# - 为 QueryString 压缩大约 1000 字节的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1445634/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com