You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

带重音字符从数据库读取后显示乱码符号的修复方案咨询

修复邮件内容乱码问题

核心原因

这是字符编码不匹配导致的——葡萄牙语中的带重音字符(如ã、é、á)属于UTF-8扩展字符集,在数据库存储、读取或邮件发送环节未统一使用UTF-8编码,就会出现�这类乱码。

分步修复方案

1. 确认数据库编码配置

  • 检查存储邮件模板的数据库表/列编码,确保设置为utf8mb4(比标准utf8支持更完整的Unicode字符)
    • 查看列编码的SQL命令:
      SHOW FULL COLUMNS FROM your_table_name LIKE 'message_column';
      
    • 若编码不是utf8mb4,执行修改命令:
      ALTER TABLE your_table_name MODIFY COLUMN message_column TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
      
  • 确保数据库连接字符串指定UTF-8编码,比如JDBC连接需添加参数:
    useUnicode=true&characterEncoding=utf8mb4
    

2. 读取数据时强制UTF-8编码

  • 调用getMessage()读取数据后,若底层框架默认使用了非UTF-8编码(如ISO-8859-1),手动转换编码:
    String rawContent = getMessage();
    String utf8Content = new String(rawContent.getBytes("ISO-8859-1"), "UTF-8");
    

3. 邮件发送环节指定UTF-8编码

  • 发送邮件时必须明确设置内容的编码为UTF-8,同时指定MIME类型:
    • JavaMail示例:
      MimeMessage mail = new MimeMessage(session);
      // 纯文本格式
      mail.setContent(utf8Content, "text/plain; charset=UTF-8");
      // 若为HTML格式
      mail.setContent(utf8Content, "text/html; charset=UTF-8");
      
    • 若使用模板引擎(如Thymeleaf),需配置模板渲染时采用UTF-8编码。

4. 验证模板原始存储

  • 重新存入正确的邮件模板内容,确保存入过程使用UTF-8编码,避免数据库存储阶段就出现乱码。

内容的提问来源于stack exchange,提问作者StepZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 23:45:54