javascript - 在不达到 URL 限制的情况下将 ascii 字符发送到 mailto 的最有效方法

标签 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 等打开 O​​utlook 的方法,但这是特定于浏览器/电子邮件客户端的。

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

因此,我寻找最简单的选项,其中用户参与几乎为 0,结果是发送一封包含表单数据的电子邮件,所有这些都没有服务器端语言,并使用压缩算法(如果适用)。

非常感谢您的帮助!

最佳答案

您将很难做到“从不”压缩,因为压缩器总是会扩展而不是压缩字符串。 (压缩的基本数学属性。)

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

关于javascript - 在不达到 URL 限制的情况下将 ascii 字符发送到 mailto 的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19784888/

相关文章:

java - 应使用什么类型的字符集 URL 编码?

node.js - 如何用 Node 压缩pdf?

javascript - 解压缩/解压缩 JavaScript 的工具

javascript - JSON.stringify() 的使用有什么区别?

javascript - Backbone : bind event happen multiple times

javascript - 使用 moment.js 获取月底前的剩余天数

javascript - 为什么 javascript 和 css 文件的名称如此复杂?

JavaScript 函数添加一串数字

javascript - 将页面 anchor 传递到新页面而不使用 URL

jquery - 最低要求的 jQuery 版本