ZABBIX报警内容:邮件标题正常,内容为乱码;微信报警正常。
曾试图改变环境变量:export LANG=zh_CN.UTF-8 依旧为乱码
原因:export只改变的环境变量 而ZABBIX报警内容为传参,因此需要转码。
1 2 3 4 5 6 7 8 9 10 11 12 13 | #!/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)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架