IntelliJ IDEA下基于Java的Telegram机器人无法发送波斯语文本问题
Java TelegramBots库波斯语消息乱码解决方案
问题现象
使用rubenlagus/TelegramBots库开发Telegram机器人时,发送波斯语消息全部显示为乱码,示例如下:
实际应发送内容为:به پنل ادمین خوش آمدید
开发环境为IntelliJ IDEA。
解决方案
1 调整IDEA全局编码配置
- 打开IDEA设置页(快捷键
Ctrl+Alt+S,Mac系统为Cmd+,),依次进入Editor > File Encodings路径 - 将
Global Encoding、Project Encoding、Default encoding for properties files三个配置项全部设置为UTF-8 - 勾选
Transparent native-to-ascii conversion选项,保存后重启IDEA
2 添加JVM运行编码参数
- 打开项目的
Run/Debug Configurations面板,找到机器人对应的启动配置 - 在
VM options输入框中添加参数:-Dfile.encoding=UTF-8 - 保存配置后重新启动项目
3 排查代码转码逻辑
TelegramBots库默认要求传输的文本为UTF-8编码,多余的手动转码操作是导致非ASCII字符乱码的常见原因
- 检查消息构造逻辑,不要对波斯语字符串执行多余的编码转换操作,直接传递原始字符串即可
- 如果字符串从外部文件、数据库等数据源读取,确认读取时指定编码为UTF-8,示例代码:
// 读取外部文件时指定UTF-8编码 String persianText = Files.readString(Paths.get("message.txt"), StandardCharsets.UTF_8);
- 发送消息的代码示例参考:
SendMessage msg = SendMessage.builder() .chatId(用户chatId) .text("به پنل ادمین خوش آمدید") // 直接传入原始波斯语字符串即可 .build(); execute(msg);
内容的提问来源于stack exchange,提问作者Mori
相关产品推荐
相关产品推荐

