zabbix告警郵件亂碼問題


ZABBIX報警內容:郵件標題正常,內容為亂碼;微信報警正常。

曾試圖改變環境變量:export LANG=zh_CN.UTF-8 依舊為亂碼

原因:export只改變的環境變量 而ZABBIX報警內容為傳參,因此需要轉碼。

#!/bin/bash
#zabbix郵件告警腳本
#auth:jzd
#time:2017-03-21
#Version:V1.0

mail=$1
title=$2
message=$3

echo "${message}" | /usr/bin/iconv -t GB2312 -f UTF-8 | mailx -s "${title}" ${mail} >> /tmp/mailx.log 2>&1

exit $?

這里使用iconv進行重新編碼:

[功能] 

對於給定文件把它的內容從一種編碼轉換成另一種編碼。 

[描述] 

-f encoding :把字符從encoding編碼開始轉換。 

-t encoding :把字符轉換到encoding編碼。 

-l :列出已知的編碼字符集合 

-o file :指定輸出文件 

-c :忽略輸出的非法字符 

-s :禁止警告信息,但不是錯誤信息 

--verbose :顯示進度信息 

-f和-t所能指定的合法字符在-l選項的命令里面都列出來了。 

 

[舉例] 

*列出當前支持的字符編碼: 

#iconv -l 

*將文件file1轉碼,轉后文件輸出到fil2中: 

#iconv  -f EUC-JP-MS -t UTF-8 file1 -o file2 //沒-o那么會輸出到標准輸出. 

*實際需求,從hive中取出的數據是utf8的,要load到mysql中,gbk編碼。所以在load之前要先對文件進行轉碼。

復制代碼
mysql_cmd = "iconv -c -f utf-8 -t gbk ./data/al_ver_" + yesterday_time + ".xls -o ./data/GBK_al_ver_" + yesterday_time + ".xls " print(mysql_cmd) os.system(mysql_cmd) mysql_cmd = "mysql -h60.28.200.78 -uroot -pyeelion -A LogStat_RT -e \"load data local infile \'./data/GBK_al_ver_" + yesterday_time + ".xls ' into table HiveData_508\"" print(mysql_cmd) os.system(mysql_cmd)
復制代碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM