全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 数据可视化
91 0
2025-11-19

在 DBeaver 中 MySQL 数据显示正常,但在 FineReport(帆软报表)中查询相同数据时出现中文乱码(如“笔记本电脑”变成“鎴戝姛椹”或“???”)。这是一个典型的字符编码不一致问题。虽然数据库中的数据存储正确,但 FineReport 在读取时未能正确识别 UTF-8 编码。

一、根本原因分析

原因 说明
数据库字符集为
utf8mb4
DBeaver 显示正常 说明数据本身没有问题
FineReport JDBC 连接未指定编码 默认使用 GBK 或 ISO-8859-1 解析 UTF-8 字节,导致乱码
使用了旧版 MySQL 驱动(5.x) 对 UTF-8 支持较差,容易出错
Java 环境默认编码非 UTF-8 影响字符串解析

二、解决方案(按优先级排序)

方法 1:修改 FineReport 的 JDBC URL(最关键!)

在 FineReport 的「服务器」→「定义数据连接」中,找到你的 MySQL 连接,修改 JDBC URL,添加以下参数:

jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
  • 必须包含:
    useUnicode=true

    characterEncoding=UTF-8
  • 推荐加上
    serverTimezone=Asia/Shanghai
    (避免时区警告)

错误示例(缺少编码参数):
text
编辑

jdbc:mysql://localhost:3306/test

操作位置:
打开 FineReport 设计器 → 「服务器」→ 「定义数据连接」→ 修改现有连接或新建连接

方法 2:升级 MySQL JDBC 驱动(必须用 8.0+)

FineReport 可能自带的是旧版驱动(如

mysql-connector-java-5.1.x.jar
),它对 UTF-8 支持较差。步骤如下:

  1. 下载最新版 MySQL 驱动:
    地址:https://dev.mysql.com/downloads/connector/j/
    选择 Platform Independent → ZIP 下载
    mysql-connector-j-8.0.xx.jar
  2. 替换 FineReport 的驱动文件:
    路径:
    webapps/webroot/WEB-INF/lib/

    删除旧的
    mysql-connector-java-5.1.x.jar
    ,放入新的
    mysql-connector-j-8.0.xx.jar
  3. 重启 FineReport 服务

注意:MySQL 8.0 必须使用 8.x 驱动,否则无法连接或出现编码异常。

方法 3:确认数据库字符集为
utf8mb4

运行以下 SQL 查看是否正确:

SHOW VARIABLES LIKE 'character_set%';
SHOW CREATE DATABASE your_db_name;
SHOW CREATE TABLE asset_info;

正确结果应为:

character_set_client     = utf8mb4
character_set_connection = utf8mb4
character_set_database   = utf8mb4
character_set_results    = utf8mb4
character_set_server     = utf8mb4

如果不是,请执行:

ALTER DATABASE your_db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE asset_info CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

方法 4:设置 Java 启动参数(确保 JVM 使用 UTF-8)

本人通过使用方法 4 解决了乱码问题,具体步骤如下:

在 Windows 本地电脑上部署 FineReport,需要设置 Java 启动参数

-Dfile.encoding=UTF-8
,以确保 JVM 使用 UTF-8 编码,避免中文乱码。

正确解决方案:修改

designer.vmoptions
。FineReport 设计器是基于 Java 的桌面程序,其 JVM 启动参数由
.vmoptions
文件控制。

  1. 进入安装目录:
    打开文件夹:
    D:\FineReport_11.0\
  2. 查找或创建配置文件:
    在该目录下(不是
    bin
    文件夹内),查找以下文件之一:
    designer.vmoptions

    FineReport.vmoptions
  3. 注意:
    .vmoptions
    文件通常在主目录(与
    bin
    同级),而不是
    bin
    里面。
    如果找不到,请手动创建:
    D:\FineReport_11.0\
    目录下 → 右键 → 新建 → 文本文档
    输入内容:
    -Xms512m
    -Xmx2048m
    -Dfile.encoding=UTF-8

    将文件重命名为:
    designer.vmoptions
    (确保扩展名是
    .vmoptions
    ,不是
    .txt

    如果系统隐藏了扩展名,请在“查看”中勾选“文件扩展名”,避免变成
    designer.vmoptions.txt
  4. 完全关闭设计器:
    关闭所有 FineReport 窗口
    打开任务管理器(Ctrl+Shift+Esc)
    结束所有
    designer.exe
    java.exe
    进程
  5. 重新启动设计器:
    双击
    D:\FineReport_11.0\bin\designer.exe
    启动
  6. 测试数据集:
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群