Ответ Curl не декодирует специальные символы

#api #rest #curl #encoding #decoding

#API #отдых #curl #кодирование #декодирование

Вопрос:

Я выполняю http-запрос к Api, и мой ответ всегда не декодирует специальные символы. Уже пытался добавить тип содержимого utf-8 и принять заголовок enconding, но это не решает.

 curl --location --request POST 'https://example.com/clients.json?api_key=12345678'  --header 'Content-Type: application/json;' --header 'Cookie: _makeover_app_ix_com_session=BAh7BzoPc2Vzc2lvbl9pZCIlZTQ5YWQyYTE0YjMyZTI0OTgwNmI5NjgxZmRkYzkxZTciCmZsYXNoSUM6J0FjdGlvbkNvbnRyb2xsZXI6OkZsYXNoOjpGbGFzaEhhc2h7BjoKZXJyb3IiRXXvbWUgbsOjbyBlc3TDoSBkaXNwb27DrXZlbC48YnIvPkNvbnRyaWJ1aW50ZSBuw6NvIMOpIHbDoWxpZG88YnIvPgY6CkB1c2VkewY7B1Q=--9cd818580f4d9c76ac84be57dfcc33436eda021e' --data-raw '{
  "client": {
    "name": "Customer name"
  }
}'
 

Пример ответа:

 {"error":"Nome nu00e3o estu00e1 disponu00edvel."}

 

Ответ №1:

Эти символы являются символами UTF-8, но они также кодируются с использованием escape-последовательностей JSON / Javascript unicode.

CURL не собирается изменять HTTP-ответ для вас, но анализатор JSON будет знать, что с ним делать. Если вы хотите что-то сделать с этим в командной строке, вам может понравиться jq команда.

 curl --location --request POST 'https://example.com/clients.json?api_key=12345678'  --header 'Content-Type: application/json;' --header 'Cookie: _makeover_app_ix_com_session=BAh7BzoPc2Vzc2lvbl9pZCIlZTQ5YWQyYTE0YjMyZTI0OTgwNmI5NjgxZmRkYzkxZTciCmZsYXNoSUM6J0FjdGlvbkNvbnRyb2xsZXI6OkZsYXNoOjpGbGFzaEhhc2h7BjoKZXJyb3IiRXXvbWUgbsOjbyBlc3TDoSBkaXNwb27DrXZlbC48YnIvPkNvbnRyaWJ1aW50ZSBuw6NvIMOpIHbDoWxpZG88YnIvPgY6CkB1c2VkewY7B1Q=--9cd818580f4d9c76ac84be57dfcc33436eda021e' --data-raw '{
  "client": {
    "name": "Customer name"
  }
}' | jq .