Que transformações de dados a opção --data do curl executa?

4

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?

    
por Mark Amery 30.05.2015 / 02:54

1 resposta

1

What are these mysterious "conversions"?

Sem o sinalizador binário stdin é lido no modo de texto (isso faz diferença no Windows) e, nas plataformas que precisam dele (mainframes IBM e similares), os dados são recodificados a partir de charset IBM-1047 ( também conhecido como EBCDIC ) para ISO8859-1 usando iconv(3) . Há também uma diferença na forma como o comprimento dos dados (conforme transmitido para Content-Length e amigos) é calculado.

    
por 30.05.2015 / 08:26

Tags