linux 伺服器 java日誌中文亂碼?????
阿新 • • 發佈:2020-07-31
公司測試叢集遷往騰訊雲,安裝完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