【问题标题】:Invalid UTF-8 middle byte 0x72无效的 UTF-8 中间字节 0x72
【发布时间】:2017-04-14 19:19:51
【问题描述】:

我在 spring-kafka 中使用 JsonSerializer 和 JsonDeserializer 在生成消息时设置值序列化器。 该消息有一个字段(orgName),其中包含一个特殊字符(德语变音符号)。如何处理这个特殊字符?我知道 JsonDeserializer 使用杰克逊,杰克逊支持 utf-8。 JsonDeserializer 因为它抛出了这个错误:

Caused by: com.fasterxml.jackson.databind.JsonMappingException: Invalid UTF-8 middle byte 0x72
 at [Source: [B@403d4534; line: 1, column: 128]
 at [Source: [B@403d4534; line: 1, column: 116] (through reference chain: com.abc-company.kafka.JobRequest["orgName"])
    at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:388) ~[jackson-databind-2.8.5.jar:2.8.5]
    at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:348) ~[jackson-databind-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.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:1626) ~[jackson-databind-2.8.5.jar:2.8.5]
    at 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.jar:na]

【问题讨论】:

标签: jackson spring-kafka


【解决方案1】:

确保使用 -Dfile.encoding=UTF-8 启动 JVM。您的 JVM 默认为操作系统字符集

这里是my tutorial on how to do that

【讨论】:

    【解决方案2】:

    您的反序列化程序使用 UTF-8,但您的序列化程序使用另一种编码,例如 ISO 8859-1。要解决这个问题,必须将 Serializer 的编码设置为 UTF-8。

    有关此错误发生原因的解释,请参阅this answer 的类似问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-04
      • 2012-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多