confluence中文乱码解决思路和方法

本文提供了一套全面的解决方案来解决Atlassian Confluence平台上的中文乱码问题,包括检查和修正文件系统、数据库及连接字符串的编码设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先明确一个东西,如果confluence写得文章保存以后出现乱码,那么只有三种可能:

  • 文件系统编码不正确。不支持中文(上传的附件中有中文,预览出现乱码,大部分是这个原因)
  • 数据库编码不正确(大部分是这个原因)
  • 数据连接串没显示指定编码(这个最容易忽略,这次问题也是因为这个)

文件系统编码不正确

confluence官网提供了专门校验文件系统编码的方法。 官网推荐检测文件系统编码具体方法其实很简单,就是用访问下面的URL,confluence会自动检测编码的支持程度。

    #如果有域名的话可以用这个URL:
    http://confluence.atlassian.com/admin/encodingtest.action
    #或者简单粗暴直接用ip访问也行
    http://<host address>:<port>/admin/encodingtest.action

如果文件系统编码支持中文,那么继续下一步检验 数据库的编码支持。

数据库编码中文支持

调整数据库乱码分为三步

  • 数据库层面上的字符检查
  • collation层面的编码检查
  • 表结构层次的编码检查数据库层面上的字符检查

    #运行下面的sql语句,查看结果,结果应该如下图所示
    show variables like 'char%';

sql执行结果应该如下所示:


    character_set_client    utf8
    character_set_connection    utf8
    character_set_database    utf8
    character_set_filesystem    binary
    character_set_results    utf8
    character_set_server    utf8
    character_set_system    utf8
    character_sets_dir    /rdsdbbin/mysql-5.6.27.R1/share/charsets/

如果不是那么分别执行对应的sql语句,然后看下是不是修改成了utf8


     set character_set_client=utf8;
     set character_set_connection=utf8;
     set character_set_database=utf8;
     set character_set_results=utf8;
     set character_set_server=utf8;
     set character_set_system=utf8;

collation层面的编码检查

运行如下的sql语句


    show variables like 'collation%';

上面sql运行结果应该如下图所示:



    #结果应该如下
    collation_connection    utf8_general_ci
    collation_database    utf8_bin
    collation_server    utf8_general_ci

如果不是上面所示的结果,那么执行对应的sql语句调整过来


    ALTER DATABASE <Confluence database name> CHARACTER SET utf8 COLLATE utf8_bin;
    set collation_connection=utf8;
    set collation_database=utf8 ;
    set collation_server=utf8;

表结构f层次的编码检查


    #执行如下两个sql,会自动生成修改语句, 然后你只用复制结果sql,执行就可以修复table层级的编码

        SELECT CONCAT('ALTER TABLE ',  table_name, ' CHARACTER SET utf8 COLLATE utf8_bin;') FROM information_schema.TABLES AS T, information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` AS C
    WHERE C.collation_name = T.table_collation
    AND T.table_schema = 'confluence 数据库名字'
    AND
    (
        C.CHARACTER_SET_NAME != 'utf8'
        OR
        C.COLLATION_NAME != 'utf8_bin'
    );



    SELECT CONCAT('ALTER TABLE `', table_name, '` MODIFY `', column_name, '` ', DATA_TYPE, ' CHARACTER SET UTF8 COLLATE utf8_bin', (CASE WHEN IS_NULLABLE = 'NO' THEN ' NOT NULL' ELSE '' END), ';')
    FROM information_schema.COLUMNS
    WHERE TABLE_SCHEMA = 'confluence 数据库名字'
    AND DATA_TYPE != 'varchar'
    AND
    (
        CHARACTER_SET_NAME != 'utf8'
        OR
        COLLATION_NAME != 'utf8_bin'
    );

经过上面步骤,数据库层面的编码格式已经修复了。

修复数据库连接串的编码


    vim  /var/atlassian/application-data/confluence/confluence.cfg.xml
    #找到如下行
    <property name="hibernate.connection.url">jdbc:mysql://jira.csphgnawyi6m.us-west-1.rds.amazonaws.com/confluencedb</property>
    #修改为
    <property name="hibernate.connection.url">jdbc:mysql://jira.csphgnawyi6m.us-west-1.rds.amazonaws.com/confluencedb?useUnicode=true&characterEncoding=UTF-8</property>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

完颜振江

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值