Recentemente, usei a opção --data do curl para fazer upload de um JSON para um servidor e, depois de ler a manpage, não tenho certeza se posso ter fé de que ele chegou lá intacto.
manpage explicitamente descreve uma diferença entre
--data /
--data-ascii e
--data-binary ; ou seja, quando a sintaxe
@filename for usada para fazer curl ler dados de um arquivo,
--data removerá novas linhas do arquivo, mas
--data-binary não.
No entanto, a página man também faz parecer que há mais diferenças. A seguinte passagem da descrição de --data-binary só pode ser razoavelmente interpretada para significar que há certas 'conversões' além da remoção de nova linha que --data faz nos dados que recebe:
--data-binary <data>
...
... Data is posted in a similar manner as --data-ascii does, except that newlines and carriage returns are preserved and conversions are never done. (emphasis mine)
Quais são essas misteriosas "conversões"? Eles ainda existem? Eles não estão documentados na seção do manual sobre a opção --data , nem eu posso descobri-los através da experimentação. As coisas óbvias que se pode esperar que a opção --data transforme (como e comercial, barras, hashes, pontos de interrogação, sinais de igual, caracteres chineses ou ) todos são enviados intactos e inalterados.
Então, do que o manual está falando?