![带有变音符号的curl会导致“JSON解析错误:无效的UTF-8中间字节0x22”](https://linux22.com/image/132626/%E5%B8%A6%E6%9C%89%E5%8F%98%E9%9F%B3%E7%AC%A6%E5%8F%B7%E7%9A%84curl%E4%BC%9A%E5%AF%BC%E8%87%B4%E2%80%9CJSON%E8%A7%A3%E6%9E%90%E9%94%99%E8%AF%AF%EF%BC%9A%E6%97%A0%E6%95%88%E7%9A%84UTF-8%E4%B8%AD%E9%97%B4%E5%AD%97%E8%8A%820x22%E2%80%9D.png)
我从命令行(Windows 上的 Git Bash)或作为 Bash 脚本的一部分运行下面的 curl 命令。
curl -s -X POST -H "Content-Type: application/json" -H "Accept: application/json" -d "{\"testField\":\"ä\"}" https://someurl...
卷曲命令的主体有一个元音变音 ä。
作为在 AWS Elastic Beanstalk 容器中运行的 Spring Boot REST API 的服务器返回以下错误:
JSON parse error: Invalid UTF-8 middle byte 0x22; nested exception is com.fasterxml.jackson.core.JsonParseException: Invalid UTF-8 middle byte 0x22\n at [Source: (PushbackInputStream); line: 1, column: 17]
导入到 Postman 中的相同的curl 命令工作得很好,所以我相信这是一个curl 问题而不是服务器问题。
答案1
尝试ä
用 UTF8 编码替换该字符\u00e4
:
curl -s -X POST -H "Content-Type: application/json" -H "Accept: application/json" -d '{"testField":"u00e4"}' https://someurl..