在 Debian 上运行 Kafka 出现“乱码”,通常不是 Kafka 本身坏了,而是字符编码不一致或终端/日志/客户端编码不对。下面按常见原因给你梳理一下,并给出对应解决办法。
Debian 默认不一定开启 UTF-8。
locale
如果看到:
LANG=C
LC_ALL=
或不是 UTF-8,就很容易乱码。
sudo apt update
sudo apt install locales
sudo dpkg-reconfigure locales
勾选:
en_US.UTF-8
然后设为默认。
再确认:
locale
应为:
LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8
如果你用:
kafka-console-consumer.sh
看到乱码,多半是:
Kafka 只存字节,不负责编码。
例如 Java 生产者:
String msg = "中文";
producer.send(new ProducerRecord<>("topic", msg.getBytes("GBK")));
消费者用默认 UTF-8 读 → 乱码。
✅ 解决:
即使系统是 UTF-8,如果你的:
也会乱码。
Window → Translation → UTF-8export LANG=en_US.UTF-8
如果 server.log 乱码:
Kafka 是 Java 程序。
检查:
ps aux | grep kafka
看有没有:
-Dfile.encoding=UTF-8
如果没有,可能用的是系统默认(如 ANSI)。
在 kafka-server-start.sh 或 KAFKA_OPTS 中加:
export KAFKA_OPTS="-Dfile.encoding=UTF-8"
老版本 Kafka(0.8 / 0.9):
✅ 建议:
locale 是否是 UTF-8-Dfile.encoding=UTF-8你可以贴一下:
locale 输出我可以直接告诉你是哪一层出的问题。