大家好,我是烤鸭:

​ 今天分享一个 saltstack 中文乱码 的问题。

问题说明

由于项目之前没有接入公司的发布系统,今天接入之后发现日志乱码,不仅如此,从nacos获取到的中文参数也是乱码。于是猜想是发布系统遗留了一个bug。如下图。

发布系统使用的是 saltstack,网上查了下,saltstack 导致的中文乱码,下文说的是2015.8 之后的版本修复了,而我们这的版本是2019.2.5。

https://blog.csdn.net/hnhuangyiyang/article/details/50421738

即便如此我们还是去看一下现在的源码。找到salt依赖的 cmd脚本。

more /usr/lib/python2.7/site-packages/salt/modules/cmdmod.py


关于上边参数的说明,可以看一下 https://www.iteye.com/blog/yintech-397380,这里重点看一下 LANGUAGE。

locale的设定:
LC_ALL和LANG优先级的关系:LC_ALL > LC_* >LANG
1、如果需要一个纯中文的系统的话,设定LC_ALL= zh_CN.XXXX,或者LANG=zh_CN.XXXX都可以。
2、如果只想要一个可以输入中文的环境,而保持菜单、标题,系统信息等等为英文界面,那么只需要设定 LC_CTYPE=zh_CN.XXXX,LANG=en_US.XXXX就可以了。
3、假如什么也不做的话,也就是LC_ALL,LANG和LC_*均不指定特定值的话,系统将采用POSIX作为lcoale,也就是C locale。

LANG和LANGUAGE的区别:
LANG - Specifies the default locale for all unset locale variables
LANGUAGE - Most programs use this for the language of its interface
LANGUAGE是设置应用程序的界面语言。而LANG是优先级很低的一个变量,它指定所有与locale有关的变量的默认值。

可以看到启动应用程序没有设置 lc_all ,会按照 language处理,而这里language设置的C。

C 是啥编码呢。看下这篇http://www.gnu.org/software/libc/manual/html_node/Standard-Locales.html#Standard-Locales,也就是 ISO 编码。

编码乱了,为什么会导致nacos和日志乱码,new String的时候不指定编码格式,会按照当前环境变量的编码格式创建,所以乱码了。

其实docker也是一样的,可以参考解决方案的第一个。

解决方案

  • 修改应用程序编码,比如我们是java应用,在启动脚本中增加 -Dfile.encoding=utf-8

  • 修改 saltstack ,因为salt实际调用用的是SLS,需要把env参数找位置加进去,如下图

  • 当然也可以修改 上边说到的 cmdmod.py

总结:

问题出现还是有一定影响的,总结下发布系统使用挺久的了,出现这个问题没人反馈过(没人想到是发布系统的问题),要不自己改脚本,要不想别的办法处理(new String的时候,指定编码格式)。

这种问题最好还是由上游处理,解决方案的1、3都不太友好。

还有就是测试和生产环境并不一致,发布系统只在生产环境使用(如果发布系统出bug了,很难查,而且测试验收通过了?)

坑无处不在,希望天下无坑。

日志 中文乱码、nacos 中文乱码、saltstack 中文乱码、docker中文乱码相关推荐

  1. ajax传输json数据格式乱码_解决Ajax加载JSon数据中文乱码问题

    一.问题描述 使用zTree的异步刷新父级菜单时,服务器返回中文乱码,但项目中使用了SpringMvc,已经对中文乱码处理,为什么还会出现呢? 此处为的异步请求的配置: Java代码 async: { ...

  2. jsp 中提交表单后在firefox、chrome 中中文显示为正常,但在IE中中文显示为乱码?...

    如题: jsp 中提交表单后在firefox.chrome 中中文显示为正常,但在IE中中文显示为乱码? 备注:框架:spring 和hibernate 提交表单后,在IE中提交的数据传到Contro ...

  3. c# mysql 汉字乱码_在C#和MySQL中存取中文字符时避免乱码的方法

    当用到socket来进行网络程序开发时,大多数情况下会遇到中文字符的发送与接收,这时若对发送的字符串用默认的方式进行处理,则一般会得到一堆乱码. 由于中文字符采用双字节表示,所以对含有中文的字符串的处 ...

  4. php mysql存储中文为空_PHP如何解决MySQL存储数据中文乱码

    PHP如何解决MySQL存储数据中文乱码?本文主要介绍了PHP+MySQL存储数据常见中文乱码问题,针对php+mysql常见的中文乱码问题予以总结分析,并给出了解决方法供大家参考.需要的朋友可以参考 ...

  5. java写入文件中文乱码问题_解决Java写入UTF-8文件中文乱码问题

    最近需要从Java中输出UTF-8编码的XML文件,遇到了两次中文乱码问题.一是奇数个汉字出现乱码,二是写入文件的实际编码与XML声明的编码不符.经过几番折腾,终于解决这两个问题,也对Java的字符编 ...

  6. 爬取html数据中文乱码,解决PHP中file_get_contents抓取网页中文乱码问题

    根据网上有朋友介绍说原因可能是服务器开了GZIP压缩. 下面是用firebug查看我的博客的头信息,Gzip是开了的. 请求头信息原始头信息 代码如下 复制代码 Accept text/html,ap ...

  7. SQLServer乱码问题的分析及解决方法(中文字符被存入数据库后,显示为乱码)

    SQLServer乱码问题的分析及解决方法(中文字符被存入数据库后,显示为乱码) 参考文章: (1)SQLServer乱码问题的分析及解决方法(中文字符被存入数据库后,显示为乱码) (2)https: ...

  8. python中文字体奇怪_利用python检查 AS400的中文字问题

    总所周知,AS400处理中文的能力比较有限,特别是在针式打印机上打印含有中文字体的报表的时候,特别容易出现乱码.这里先探讨一下AS400的 中文格式.在AS400中,存放中文字的字段都是以0x0E开头 ...

  9. python有中文无法保存_解决python3爬虫无法显示中文的问题

    解决python3爬虫无法显示中文的问题 有时候使用python从网站上爬数据的时候,如果数据里包含中文,有时候显示的却是如下所示...\xe4\xba\xba\xef\xbc\x8c\xe6...类 ...

  10. arch终端添加中文支持_Archlinux中文化--怎么显示中文的界面

    Archlinux中文化--怎么显示中文的界面? 怎么显示中文的界面? 要正确实现中文,必需设置正确的locale和安装合适的中文字体. locale的设定 Linux中通过locale来设置程序运行 ...

最新文章

  1. postgresql立式版本下载_PostgreSQL 12.0 正式版本发布
  2. Winform中实现监控CPU内存使用率(附代码下载)
  3. 中设置colorbar_气象绘图加强版(六)—Colorbar
  4. C++字符串处理封装类String
  5. linux 安装simg2img,linux可执行文件执行时提示No such file or directory(docker环境中运行的ubuntu镜像)...
  6. SQL server 2008 T-sql 总结
  7. ML--HMM(隐马尔可夫模型及python的实现2)
  8. 高赞 GitHub 项目盘点:给力的 Spring 教程
  9. 软件测试面试题:和用户共同测试(UAT测试)的注意点有哪些?
  10. GP数据库获取指定时段的所有天数
  11. 【IT项目管理】第4章 控制项目范围
  12. 精品餐饮业奢华西餐专业PPT模板
  13. 给Date加上23时59分59秒
  14. IT项目经理岗位职责
  15. GIS正日益融入IT主流 成IT业重要部分
  16. 微信小程序android和IOS拨打电话区别
  17. 国四网络工程笔记(究极错题)
  18. 8086的两种工作模式_8086系统中最小模式与最大模式两种工作方式的主要区别是什么?...
  19. git服务器搭建用账号和密码,git服务器搭建过程
  20. 中文词性标注学习笔记(三)---词性标注

热门文章

  1. 前端学习(3060):vue+element今日头条管理-处理展示文章封面
  2. 前端学习(2940):vue作为组件的注意事项
  3. [html] From表单提交时为什么会刷新页面?怎么预防刷新?
  4. [css] 怎么使图片宽度自适应呢?
  5. 工作170:删除做个判断操作 成功删除 取消取消
  6. 前端学习(2515):父向子传值
  7. 前端学习(1562):ng-hide,ng-show
  8. spring mvc学习(9):路径参数
  9. Linux Qt打包发布应用程序
  10. adam算法效果差原因_冷库制冷效果差原因