我最近使用了 curl 的 --data
选项将一些 JSON 上传到服务器,在阅读联机帮助页后,我不确定我是否可以确信它完好无损。
curl 的联机帮助页 明确描述了 curl 的--data
/--data-ascii
和--data-binary
选项之间的一个区别;即,当使用该@filename
语法使 curl 从文件中读取数据时,将从文件中--data
去除换行符,但--data-binary
不会。
但是,手册页也使它听起来有更多差异。描述中的以下段落--data-binary
只能合理地解释为意味着除了--data
对给定的数据进行换行删除之外,还有某些“转换” :
--data-binary <数据>
...
...数据以与 --data-ascii 类似的方式发布,除了保留换行符和回车符并且永远不会进行转换。(强调我的)
这些神秘的“转换”是什么?他们甚至存在吗?它们没有记录在手册的--data
选项部分中,我也无法通过实验发现它们。人们可能期望--data
选项转换的显而易见的东西(如与号、斜线、哈希、问号、等号、汉字或笑眯眯的猫脸)都完好无损地发送。
那么手册在说什么?
这些神秘的“转变”是什么?
如果没有二进制标志stdin
,则以文本模式读取(这在 Windows 上会有所不同),并且在需要它的平台(IBM 大型机等)上,数据会从字符集IBM-1047
(又名EBCDIC
)重新编码为ISO8859-1
使用iconv(3)
. Content-Length
计算数据长度(传递给朋友)的方式也存在差异。