最有效的方法是将ascii字符发送到mailto而不会达到URL限制

时间:2013-11-05 08:50:00

标签: javascript url compression mailto url-encoding

我有一张表格,通过mailto提交给电子邮件服务器。

正如您所知,mailto内容存在限制,因为它超出了URL字符限制,因此无法使用。

我开发了一些特定于域的自定义数据压缩,但仍然不够(如果所有字段都已填满,它将突破极限,这种情况很少见......但对于客户来说,这种情况很少见。更好。)。

我找到了Lempel-Ziv-Welch算法(http://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv%E2%80%93Welch)并得出结论,它可以让我节省40%的平均长度。

不幸的是,我当然需要调用encodeURIComponent将它发送到mailto,并且由于LSW algorightm将返回许多URL不支持的字符,这实际上会使URL编码后更糟。

在您告诉我使用服务器端语言向服务器发布帖子之前,让我告诉您这是一个非常独特的情况,表单必须通过客户端应用程序通过电子邮件提交,因为电子邮件是最终用户与外界联系的唯一途径......

那么,你知道如何在没有encodeURIComponent破坏它的情况下有效地压缩数据吗?

或者有没有办法在不通过浏览器的情况下将内容发送到mailto?

我已经看到了一些用ActiveX和东西打开Outlook的方法,但这非常适合浏览器/电子邮件客户端。

此外,我检查了使用javascript在文件中保存表单信息的选项......但应用程序用户是,我们只是说他们根本不是专家,而且据我所知,他们可能会失败附上电子邮件。 (是的,他们很糟糕)

所以我寻找最简单的选项,其中用户介入几乎为0,结果是使用表单数据发送的电子邮件,所有这些都没有服务器端语言,如果适用,则使用压缩算法。

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:1)

你很难用压缩来“永远”,因为压缩器总会有字符串扩展而不是压缩。 (压缩的基本数学特性。)

话虽如此,压缩器比LZW好很多,具体取决于输入的长度。您应该尝试zliblzma。那些二进制输出需要仅使用允许的URL字符进行编码。