linux 服务器 java日志中文乱码?????

公司测试集群迁往腾讯云,安装完flume和kafka后使用api消费topic,在应用日志中打印出来的日志中文部分全部是???????,数据存储写入mysql数据库后中文也是乱码,针对这个问题进行调整修复:

1、kafka消费的格式问题

   设置kafka序列化和反序列化格式

properties.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
properties.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");

经测试和该配置无关【注:并不表示在使用kafka api时不用指定序列化格式】,应用日志中中文部分仍然时乱码!

2、mysql数据库默认编码问题【因为在应用日志中也是乱码,所以不太可能是这种情况】

查看mysql数据库的编码格式是否时中文或utf8

命令:show variables like 'character%'

结果:

 

 红色部分的值可以看出编码格式没有错误!

 

3、服务器本身的默认编码格式问题

因为是新的云服务器,所以才有了这个猜想,在网上也看到了相关帖子

通过命令查看服务器的编码设置:locale

 

 

可以看出都是英文的utf-8,所以打算调整该设置,但没找到直接修改这个设置的方法或命令,只有通过修改 /etc/profile文件进行调整【root用户

vim vim /etc/profile

在文件最后添加 :export LANG="zh_CN.UTF-8"

保存退出后执行命令:source /etc/profile 使配置生效,在运行服务后乱码现象不见了

还有一种方式修改,但只是临时的,当关闭会话后还是会出现乱码,所以不建议:

直接执行:export LANG="zh_CN.UTF-8"

     export LC_ALL="zh_CN.UTF-8"

 

另外在网上查找时遇到一篇帖子是关于locale命令及设置的:https://www.cnblogs.com/regit/p/7837814.html

 

在排查时我使用命令行kafka producter 产生消息,并使用consumer查看发现都没有出现乱码的现象,所以就有了服务器编码格式非中文的猜测,测试并打印出来编码格式

println(Charset.defaultCharset())

结果在本地和服务器上的结果是不一样的

本地:

 

 

服务器:

 

posted @ 2020-07-31 15:56  小戈戈不怕黑  阅读(5467)  评论(0编辑  收藏  举报