我正在尝试制作一个arduino网络服务器,这部分已经完成。现在我需要使用一些压缩。
这是我想要提供的simple.htm网页
:<ODataWebServicePort>/<ServerInstance>/OData/...
我尝试gzip这个(试过不同的工具,命令行gzip,keka,两者略有不同),并得到了simple.htm.gz。我在文本编辑器中打开它,它看起来像这样
<!DOCTYPE html>
<html>
<body>
<h1>My First Heading</h1>
<p>My first paragraph.</p>
</body>
</html>
在服务器中,我做了这个
ã˝…Vsimple.htm-å;Ä D{OÅêÿoh¸ƒ∆hacπ?§·ˆ.ƒÍeÊe vjñuÓÑ
ש
¯±=:™Çc≠∆(zÁfl ܵª
H.YQ2G6ÑçG≤HJNÊ=3fl}?ı=me
我提供了标题和内容,包括“char *htmlContent="ã˝…Vsimple.htm-å;Ä D{OÅêÿoh¸ƒ∆hacπ?§·ˆ.ƒÍeÊe vjñuÓÑ◊©¯±=:™Çc≠∆(zÁfl ܵªH.YQ2G6ÑçG≤HJNÊ=3fl}?ı=me"
”;但铬说
Content-Encoding: gzip
我知道我的网络服务器在没有gzip的情况下工作,我测试了它,我可以在浏览器上看到它。我用gzip做错了什么?
答案 0 :(得分:1)
您从文本文件中复制和粘贴可能会删除一些不可打印的字符。无论如何,它删除了任何换行符,你可以清楚地看到。
现在,gzip的文件不是ASCII,你真的不应该像C中的字符串文字那样对待它们。至少,你必须用它们的转义表示替换所有非ASCII字符。
通常,正确的方法是将压缩文件添加到二进制文件的数据或文本部分,并在需要的地方使用其地址。
这是一个answer,它解释了如何将二进制blob添加到目标文件以及如何从C代码中访问它。