Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带有非UTF-8字符的请求正文抛出JSON解析错误:无效的UTF-8起始字节0xae,0xfc_Java_Json_Spring Boot_Gradle_Jackson - Fatal编程技术网

Java 带有非UTF-8字符的请求正文抛出JSON解析错误:无效的UTF-8起始字节0xae,0xfc

Java 带有非UTF-8字符的请求正文抛出JSON解析错误:无效的UTF-8起始字节0xae,0xfc,java,json,spring-boot,gradle,jackson,Java,Json,Spring Boot,Gradle,Jackson,解析JSON请求主体时获取以下异常 请求正文有一个特殊字符“®”(非UTF-8),解析时失败。如何处理请求正文中的非UTF-8字符 { "fields": [ { "fieldLabel": "data®" } ] } 我想用特殊字符保存对象。我试着研究,却找不到一个合适的解决办法。 提前谢谢 org.springframework.http.converter.

解析JSON请求主体时获取以下异常

请求正文有一个特殊字符“®”(非UTF-8),解析时失败。如何处理请求正文中的非UTF-8字符

{
    "fields": [
        {
            "fieldLabel": "data®"
        }
    ]
}
我想用特殊字符保存对象。我试着研究,却找不到一个合适的解决办法。 提前谢谢

org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Invalid UTF-8 start byte 0xae; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Invalid UTF-8 start byte 0xae
 at [Source: (PushbackInputStream); line: 1, column: 907] (through reference chain: java.util.ArrayList[0]->com.model.TableDefinition["field"]->java.util.ArrayList[1]->com.model.FieldDefinition["fieldLabel"])
将“charset=UTF-8”添加到标题中的内容类型解决了该问题:

headers.set(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON.toString()  + ";charset=UTF-8")

JSON必须用UTF8编码。你能修复发出请求的任何东西,使其发送正确的JSON吗?没有“非UTF-8字符”这样的东西。任何Unicode字符都可以用UTF-8编码。您的JSON显然是用与UTF-8不同的字符编码编码的——这很奇怪,也很不寻常,可能意味着在生成此JSON的任何系统中都存在错误。如果您无法修复另一个系统中的错误,那么您可以通过使用JSON所在的实际字符编码(而不是UTF-8)解析JSON来解决此问题。在ISO-8859-1编码(以及许多其他ISO-8859-xx编码)中,®编码为0xae。请求主体可能正在使用ISO-8859-1或类似标准。尽管JSON很少使用非Unicode编码,但检查请求的内容类型可能是有意义的。它应该表示编码为
application/json;charset=iso-8859-1
。我发现问题出在生成json的源系统中,我在标题中添加了以下编码内容,解决了问题“headers.set(HttpHeaders.CONTENT_TYPE,MediaType.APPLICATION_json.toString()+”charset=UTF-8“;”这对您有帮助吗?