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