1. 程式人生 > 實用技巧 >linux 伺服器 java日誌中文亂碼?????

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使用者

vimvim /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