gzip并将内容复制粘贴到C程序中的String / char数组中

时间:2016-02-21 21:49:57

标签: c arduino webserver gzip

我正在尝试制作一个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做错了什么?

1 个答案:

答案 0 :(得分:1)

您从文本文件中复制和粘贴可能会删除一些不可打印的字符。无论如何,它删除了任何换行符,你可以清楚地看到。

现在,gzip的文件不是ASCII,你真的不应该像C中的字符串文字那样对待它们。至少,你必须用它们的转义表示替换所有非ASCII字符。

通常,正确的方法是将压缩文件添加到二进制文件的数据或文本部分,并在需要的地方使用其地址。

这是一个answer,它解释了如何将二进制blob添加到目标文件以及如何从C代码中访问它。