Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 向mailto发送ascii字符而不达到URL限制的最有效方法_Javascript_Url_Compression_Mailto_Url Encoding - Fatal编程技术网

Javascript 向mailto发送ascii字符而不达到URL限制的最有效方法

Javascript 向mailto发送ascii字符而不达到URL限制的最有效方法,javascript,url,compression,mailto,url-encoding,Javascript,Url,Compression,Mailto,Url Encoding,我有一个表格是通过mailto提交给电子邮件服务器的 正如您所知,mailto内容有一个限制,因为它超过了URL字符的限制,所以无法正常工作 我开发了一些特定于领域的自定义数据压缩,但它仍然不够(如果所有字段都已填充,它将突破限制,这是罕见的……但对于客户端来说,罕见已经足够糟糕了。再好不过了) 我找到了Lempel–Ziv–Welch算法()并得出结论,它可以让我节省平均长度的40% 不幸的是,我当然需要调用encodeURIComponent将其发送到mailto,因为LSW algorig

我有一个表格是通过mailto提交给电子邮件服务器的

正如您所知,mailto内容有一个限制,因为它超过了URL字符的限制,所以无法正常工作

我开发了一些特定于领域的自定义数据压缩,但它仍然不够(如果所有字段都已填充,它将突破限制,这是罕见的……但对于客户端来说,罕见已经足够糟糕了。再好不过了)

我找到了Lempel–Ziv–Welch算法()并得出结论,它可以让我节省平均长度的40%

不幸的是,我当然需要调用encodeURIComponent将其发送到mailto,因为LSW algorightm将返回许多URL不支持的字符,这实际上会使URL编码后的情况变得更糟

在您告诉我使用服务器端语言向服务器发送帖子更容易之前,让我告诉您,这是一种非常独特的情况,必须通过客户端应用程序通过电子邮件提交表单,因为电子邮件是最终用户与外部世界连接的唯一方式

那么,您知道有什么方法可以在不破坏数据的情况下有效地压缩数据吗

或者有没有一种方法可以不通过浏览器将内容发送到mailto

我见过一些使用ActiveX等打开Outlook的方法,但这是非常特定于浏览器/电子邮件客户端的

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

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


非常感谢你的帮助

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


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

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


话虽如此,根据输入的长度,有比LZW更好的压缩器。你应该试试看。然后,这些文件的二进制输出只需要使用允许的URL字符进行编码。

谢谢您的回答。事实上,LZW可以得到比原始数据更大的数据。这些链接很有趣,但在javascript中可能不适用于编码,除非我错过了一些东西,我会很快看一看,看看我能做些什么。我会在javascript中寻找等价的库。我找到了LZMA的一个实现,但我不确定我是否理解。这将返回一个数字数组。当然,这个数组比原始字符串长得多,所以我应该用这个数组吗?起初我以为这是一个新字符串的字符码数组,但显然不是这样,因为有负数。。。有任何提示标记吗?显然我理解这个保存内容的字节数,但这不是我的意图。我想保存要发送到电子邮件客户端的字符。。。我想我应该严格搜索结果为字符串的算法。将继续我的研究…所有的压缩器将产生二进制数据。您需要使用base64之类的工具将二进制文件转换为可读字符,这将扩展数据。看,谢谢你的回答。事实上,LZW可以得到比原始数据更大的数据。这些链接很有趣,但在javascript中可能不适用于编码,除非我错过了一些东西,我会很快看一看,看看我能做些什么。我会在javascript中寻找等价的库。我找到了LZMA的一个实现,但我不确定我是否理解。这将返回一个数字数组。当然,这个数组比原始字符串长得多,所以我应该用这个数组吗?起初我以为这是一个新字符串的字符码数组,但显然不是这样,因为有负数。。。有任何提示标记吗?显然我理解这个保存内容的字节数,但这不是我的意图。我想保存要发送到电子邮件客户端的字符。。。我想我应该严格搜索结果为字符串的算法。将继续我的研究…所有的压缩器将产生二进制数据。您需要使用base64之类的工具将二进制文件转换为可读字符,这将扩展数据。看见