Apache Camel集成RabbitMQ时特殊字符转问号的问题咨询
Apache Camel + RabbitMQ 特殊字符转问号问题解决
你遇到的问题本质是字符集解码不匹配:虽然设置了Exchange.CONTENT_TYPE头,但convertBodyTo(String.class)默认不会自动从这个头里提取字符集,当消息体是字节流时,Camel可能会 fallback 到系统默认字符集(比如US-ASCII),把无法识别的°这类非ASCII字符替换成问号。
直接解决方法
不用依赖Content-Type头,直接给convertBodyTo指定UTF-8字符集。把代码里的两次convertBodyTo(String.class)改成:
// 第一次转换明确指定UTF-8 .convertBodyTo(String.class, "UTF-8") .setProperty(CommonConstants.ORIGINAL_MESSAGE, body()) // ... 中间其他配置 ... // 第二次转换同样指定UTF-8 .convertBodyTo(String.class, "UTF-8")
额外要检查的点
- 确认发送消息到RabbitMQ的生产者是用UTF-8编码的,源头编码错误的话,下游再处理也无法恢复正确字符。
- 检查
assetEndpointUrl指向的下游服务是否正确处理UTF-8编码的消息,避免后续环节再次出现字符乱码问题。
内容的提问来源于stack exchange,提问作者Tony
相关产品推荐
相关产品推荐

