失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > confluence中文乱码解决思路和方法

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

时间:2020-06-13 02:33:12

相关推荐

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

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

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

文件系统编码不正确

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

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

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

数据库编码中文支持

调整数据库乱码分为三步

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

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

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

character_set_client utf8character_set_connection utf8character_set_database utf8character_set_filesystem binarycharacter_set_results utf8character_set_server utf8character_set_system utf8character_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_cicollation_database utf8_bincollation_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 CWHERE C.collation_name = T.table_collationAND T.table_schema = 'confluence 数据库名字'AND(C.CHARACTER_SET_NAME != 'utf8'ORC.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.COLUMNSWHERE TABLE_SCHEMA = 'confluence 数据库名字'AND DATA_TYPE != 'varchar'AND(CHARACTER_SET_NAME != 'utf8'ORCOLLATION_NAME != 'utf8_bin');

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

修复数据库连接串的编码

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

如果觉得《confluence中文乱码解决思路和方法》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。