curl 的 --data 选项执行哪些数据转换?

Mar*_*ery 5 curl

我最近使用了 curl 的 --data选项将一些 JSON 上传到服务器,在阅读联机帮助页后,我不确定我是否可以确信它完好无损。

curl 的联机帮助页 明确描述了 curl 的--data/--data-ascii--data-binary选项之间的一个区别;即,当使用该@filename语法使 curl 从文件中读取数据时,将从文件中--data去除换行符,但--data-binary不会。

但是,手册页使它听起来有更多差异。描述中的以下段落--data-binary只能合理地解释为意味着除了--data对给定的数据进行换行删除之外,还有某些“转换” :

--data-binary <数据>

...

...数据以与 --data-ascii 类似的方式发布,除了保留换行符和回车符并且永远不会进行转换(强调我的)

这些神秘的“转换”是什么?他们甚至存在吗?它们没有记录在手册的--data选项部分中,我也无法通过实验发现它们。人们可能期望--data选项转换的显而易见的东西(如与号、斜线、哈希、问号、等号、汉字或笑眯眯的猫脸)都完好无损地发送。

那么手册在说什么?

lcd*_*047 3

这些神秘的“转变”是什么?

如果没有二进制标志stdin,则以文本模式读取(这在 Windows 上会有所不同),并且在需要它的平台(IBM 大型机等)上,数据会从字符集IBM-1047(又名EBCDIC)重新编码为ISO8859-1使用iconv(3). Content-Length计算数据长度(传递给朋友)的方式也存在差异。