2017-04-14 1 views
1

spring-kafka에서 JsonSerializer 및 JsonDeserializer를 사용하여 메시지를 생성하는 동안 값 직렬기를 설정하고 있습니다. 메시지에는 특수 문자 (독일어 움라우트)가있는 하나의 필드 (orgName)가 있습니다.이 특수 문자는 어떻게 처리합니까? JsonDeserializer가 jackson을 사용하고 jackson이 utf-8을 지원한다는 것을 알고 있습니다. [소스에서 잘못된 UTF-8 바이트 0x72 중간 : com.fasterxml.jackson.databind.JsonMappingException : 의해 발생유효하지 않은 UTF-8 중간 바이트 0x72

: JsonDeserializer 때문에 그것의 오류가 발생 403d4534 @ [B] 라인 : 1, 컬럼 : 128] [출처 : [B @ 403d4534; (참조 체인을 통해 : com.inmoment.bond.kafka.JobRequest [ "orgName"]) 에서 com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath (JsonMappingException.java:388) ~ [ 잭슨 데이터 바인딩-2.8.5.jar : com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath (JsonMappingException.java:348)에 2.8.5] ~ [잭슨 데이터 바인딩-2.8.5.jar : 2.8.5] at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.wrapAndThrow (BeanDeserializerBase.java:1599) ~ [jackson-databind-2.8.5.jar : 2.8.5] at com.fasterxml.jackson.databind.deser. BeanDeserializer.deserializeFromObject (BeanDeserializer.java:359) ~ [jackson-databind-2.8.5.jar : 2.8.5] at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize (BeanDeserializer.java:148) ~ [ jackson-databind-2.8.5.jar : 2.8.5] at com.fasterxml.jack son.databind.ObjectReader._bindAndClose (ObjectReader.java:1626) ~ [잭슨 데이터 바인딩-2.8.5.jar : 2.8.5] com.fasterxml.jackson.databind.ObjectReader.readValue에서 (ObjectReader.java:1237) ~ [jackson-databind-2.8.5.jar : 2.8.5] at org.springframework.kafka.support.serializer.JsonDeserializer.deserialize (JsonDeserializer.java:86) ~ [spring-kafka-1.1.2.RELEASE. 항아리 : 김연아]

답변

0

귀하의 디시리얼라이저는 UTF-8을 사용하지만 당신의 시리얼 라이저는, 예를 들어, ISO 8859-1을 다른 인코딩을 사용합니다. 이 문제를 해결하려면 Serializer의 인코딩을 UTF-8로 설정해야합니다.

왜이 오류가 발생하는지에 대한 설명은 this answer 비슷한 질문을 참조하십시오.

관련 문제