完美解决SonarQube中文乱码问题

SonarQube中文项目名显示乱码问题,困扰了不少小伙伴,不幸最近我也陷入该坑,google、stackoverflow无果,很多文章甚至直接告诫不要使用中文名称,然而任务在身,不得不破。排查过程如下:

1、检查程序文件编码,没毛病:UTF-8;

2、检查sonar.properties,没毛病:sonar.sorceEncoding=UTF-8;

3、检查MySQL数据库编码,show variables like 'character_set_database',没毛病:utf8;

4、检查JDBC连接串,没毛病:useUnicode=true&characterEncoding=utf8;

5、直接将projects表中乱码的name字段update成中文,刷新页面,可以正常显示中文,说明乱码问题不是出在从读库到显示的这个过程,问题应该出在写库上;

6、写库那就得从sonar-runner/sonar-scanner客户端上找原因了,检查sonar-runner.properties,没毛病:配的是直连服务端sonar.host.url;如果配的是sonar.jdbc.url,需注意加上useUnicode=true&characterEncoding=utf8;

7、检查客户端sonar-project.properties编码,没毛病:UTF-8;

8、将sonar-project.properties中的中文改为unicode编码,即sonar.projectName=\u8fd8\u6562\u4e71\u7801,奇迹终于出现!

总结:这算是藏得比较深的乱码问题,很多人在排查到第7步的时候就开始下结论,开始时我也是卡在这一步,试了网上的多种办法均无法解决。后来突然想到SonarQube服务端和客户端都是Java开发的,而Java专门提供了一个native2ascii工具来加工properties文件的中文,说明unicode才是王道,一试果然成功。过程虽然曲折,但原因也算简单,基本功而已。

简单笔录,希望可以帮到更多SonarQube用户。

你可能感兴趣的:(完美解决SonarQube中文乱码问题)