2017-04-14 1 views
1

Ich benutze JsonSerializer und JsonDeserializer in Spring-Kafka, um den Wert Serializer beim Erstellen einer Nachricht festzulegen. Die Nachricht hat ein Feld (orgName) mit einem Sonderzeichen (deutsch umlaut). Wie gehe ich mit diesem Sonderzeichen um? Ich weiß JsonDeserializer verwendet jackson und jackson unterstützt utf-8. Die JsonDeserializer wirft diesen Fehler, da es:Ungültiges UTF-8-Mittelbyte 0x72

Verursacht durch: com.fasterxml.jackson.databind.JsonMappingException: Ungültige UTF-8 Mitte Byte 0x72 an [Quelle: [B @ 403d4534; Zeile: 1, Spalte: 128] um [Quelle: [B @ 403d4534; Zeile: 1, Spalte: 116] (über die Referenzkette: com.inmoment.bond.kafka.JobRequest ["orgName"]) unter com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath (JsonMappingException.java:388) ~ [ jackson-databind-2.8.5.jar: 2.8.5] bei com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath (JsonMappingException.java:348) ~ [jackson-databind-2.8.5.jar: 2.8.5] bei com.fasterxml.jackson.databind.deser.BeanDeserializerBase.wrapAndThrow (BeanDeserializerBase.java:1599) ~ [jackson-databind-2.8.5.jar: 2.8.5] bei com.fasterxml.jackson.databind.deser. BeanDeserializer.deserializeFromObject (BeanDeserializer.java:359) ~ [jackson-databind-2.8.5.jar: 2.8.5] bei com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize (BeanDeserializer.java:148) ~ [ jackson-databind-2.8.5.jar: 2.8.5] bei com.fasterxml.jack son.databind.ObjectReader._bindAndClose (ObjectReader.java:1626) ~ [jackson-databind-2.8.5.jar: 2.8.5] unter com.fasterxml.jackson.databind.ObjectReader.readValue (ObjectReader.java:1237) ~ [jackson-databind-2.8.5.jar: 2.8.5] unter org.springframework.kafka.support.serializer.JsonDeserializer.deserialize (JsonDeserializer.java:86) ~ [spring-kafka-1.1.2.RELEASE. jar: na]

Antwort

0

Ihr Deserializer verwendet UTF-8, aber Ihr Serializer verwendet eine andere Codierung, z. B. ISO 8859-1. Um dieses Problem zu beheben, müssen Sie die Codierung des Serializers auf UTF-8 festlegen.

Für eine Erklärung, warum dieser Fehler auftritt, siehe this answer zu einer ähnlichen Frage.