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

Java数据库测试跨分支出现编码乱码导致断言失败如何解决?

问题根因

你遇到的Muž被识别为MuĹľ的乱码是典型的UTF-8编码的字节流被错误按ISO-8859-1(Latin1)编码解析的表现,结合你已确认数据写入正确、SQL schema无差异的前提,问题完全出在feature分支的数据库读取链路的编码配置缺失上,他国同事的本地环境默认编码非UTF-8是核心触发因素。

修复步骤
    1. 强制指定JDBC连接串编码参数
      不要依赖JDBC驱动读取系统默认编码,在数据库连接URL中显式追加编码配置:
    • MySQL 连接串追加:&useUnicode=true&characterEncoding=UTF-8
    • PostgreSQL 连接串追加:&charSet=UTF-8
    • H2(教程项目常用内存数据库)连接串追加:;CHARSET=UTF-8
    1. 补充ORM框架编码配置
      若使用Spring Data JPA/Hibernate,在配置文件中新增以下参数:
    spring.jpa.properties.hibernate.connection.characterEncoding=utf-8
    spring.jpa.properties.hibernate.connection.CharSet=utf-8
    spring.jpa.properties.hibernate.connection.useUnicode=true
    
    1. 强制Gradle测试任务使用UTF-8编码运行
      在build.gradle的测试配置块中添加JVM编码参数,避免继承系统默认编码:
    test {
        jvmArgs '-Dfile.encoding=UTF-8'
    }
    
验证方法

修改配置后可先在测试类中添加代码打印当前JVM编码:
System.out.println(System.getProperty("file.encoding"));
确认输出为UTF-8后再执行测试,即可和master分支一样正常通过。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:15:03