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?