日志 中文乱码、nacos 中文乱码、saltstack 中文乱码、docker中文乱码

大家好,我是烤鸭:

​ 今天分享一个 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了,很难查,而且测试验收通过了?)

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/412597.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[css] 列举CSS优化、提高性能的方法

[css] 列举CSS优化、提高性能的方法 加载性能压缩CSS通过link方式加载,而不是import复合属性其实分开写,执行效率更高,因为CSS最终也还是要去解析如 margin-left: left;选择器性能尽量少的使用嵌套,可以采用BEM的方式来解决命名冲…

[css] 假如设计稿使用了非标准的字体,你该如何去实现它?

[css] 假如设计稿使用了非标准的字体,你该如何去实现它? 协商解决, 如果是重要信息, 如logo等, 使用图片, iconfont.个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家一起讨论 主目录 …

redis出现过多command 慢查询slowlog出现command命令

大家好,我是烤鸭: 今天分享一个问题,一个关于redis slowlog,执行过多 command命令的问题。 问题来源 所有走redis 的接口tp99和平均耗时是原来的两倍不止,运维说redis 的qps也翻倍了。查了下slowlog,发现…

[学习笔记]上下界网络流

有的时候,网络流建模要考虑某些边必须选择若干次,又不能多于若干次,而且不太容易转化成比较好的限制模型, 就简单粗暴地给每条边定一个流量的上下界,求在满足上下界的基础上的一些问题。 大概有以下几种。 基本思路都是…

[css] 你知道全屏滚动的原理是什么吗?它用到了CSS的哪些属性?

[css] 你知道全屏滚动的原理是什么吗?它用到了CSS的哪些属性? 全屏滚动和轮播图类似,都是通过改变元素位置或者显示与隐藏来实现,配合JS的一些交互距离判断,实现类似原生滚动捕获的效果。这里全屏的话就需要将宽高都设…

springcloud gateway 使用nacos 动态过滤器 记一次线上网关升级cpu升高的问题

大家好,我是烤鸭: ​ 网关升级,想使用 springcloud gateway nacos 动态过滤器配置(原来是硬编码的方式),升级之后出了一些问题(cpu升高,ygc频繁),记录一下。 关于 springcloud gateway 集成 nacos 可以看…

[css] 你是怎样抽离样式模块的?

[css] 你是怎样抽离样式模块的? 说的是 webpack extract-text-webpack-plugin插件吧? 把样式文件单独打包出来。 webpack4 升级了插件为 mini-css-extract-plugin个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易,…

【1】生产者-消费者模型的三种实现方式

(手写生产者消费者模型,写BlockingQueue较简便 ) 1、背景 生产者生产数据到缓冲区中,消费者从缓冲区中取数据。 如果缓冲区已经满了,则生产者线程阻塞; 如果…

springboot mybatis-plus 配置 yml 、druid 配置 yml 、mybatis-plus 代码生成

大家好&#xff0c;我是烤鸭&#xff1a; 今天分享一下 springboot mybatis-plus 和 druid 的yml 配置文件。 pom <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency…

[css] 说说你对媒体查询的理解

[css] 说说你对媒体查询的理解 当年做响应式布局的时候用过媒介查询&#xff0c;media query。包括现在有的时候为了兼容也会用到一些&#xff0c;查找对应范围使用不同的样式个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定…

Spring Boot 2.1 版本变化[翻译]

大家好&#xff0c;我是烤鸭&#xff1a; ​ 最近在把低版本的springboot项目升级&#xff0c;正好翻译了下springboot 2.1-2.3 版本的更新日志。 ​ Github 原文&#xff1a;https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.1-Release-Notes ​ 2.2 版…

实验吧Web-易-天网管理系统(php弱类型,==号)

打开网页&#xff0c;查看源码&#xff0c;看到 <!-- $test$_GET[username]; $testmd5($test); if($test0) --> 说明用户名需要加密之后为0。 对于PHP的号&#xff0c;在使用 运算符对两个字符串进行松散比较时&#xff0c;PHP会把类数值的字符串转换为数值进行比较&…

[css] 你知道的等高布局有多少种?写出来

[css] 你知道的等高布局有多少种&#xff1f;写出来 flex拉伸display: flex; align-items: stretch;padding margin抵消 然后background-clip默认是border-box所以会在被抵消的位置依然显示背景 造成等高假象.box,.box2{float: left;width: 100px; } .box {background: #cccccc…

Spring Boot 2.2版本变化[翻译]

大家好&#xff0c;我是烤鸭&#xff1a; ​ 最近在把低版本的springboot项目升级&#xff0c;正好翻译了下springboot 2.1-2.3 版本的更新日志。 ​ Github 原文&#xff1a;https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.2-Release-Notes ​ 2.1 版…

[css] 手写一个满屏品字布局的方案

[css] 手写一个满屏品字布局的方案 <!DOCTYPE html> <html><head><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta charset"UTF-8"><link rel"stylesheet" href"st…

个人的博客搭建(持续更新)

最近的CSDN的博客阅读体验非常的糟糕&#xff0c;恰好自己也一直想搭建一个属于自己的网站&#xff0c;放下自己的技术心得情感体会&#xff0c;从零开始慢慢搭建项目磨练技术&#xff0c;以后也把自己新习得的技术放在里面增加自己的学习乐趣。 一&#xff0c;搭建基本的项目模…

Spring Boot 2.3 版本变化[翻译]

大家好&#xff0c;我是烤鸭&#xff1a; ​ 最近在把低版本的springboot项目升级&#xff0c;正好翻译了下springboot 2.1-2.3 版本的更新日志。 ​ Github 原文&#xff1a;https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.3-Release-Notes ​ 2.1 版…

[css] span与span之间有看不见的空白间隔是什么原因引起的?有什么解决办法?

[css] span与span之间有看不见的空白间隔是什么原因引起的&#xff1f;有什么解决办法&#xff1f; 可能是设置成了inline-block。 第一种解决方案是&#xff0c;去掉span标签内的空白。 第二种解决方案是&#xff0c;设置margin负值&#xff0c;但要根据字体调整&#xff0c;…

[css] 重置(初始化)css的作用是什么?

[css] 重置&#xff08;初始化&#xff09;css的作用是什么&#xff1f; 这是一个&#xff0c;还有就是视觉问题&#xff0c;浏览器默认样式会影响我们的设计还原&#xff0c;而且默认样式一般不够美观&#xff0c;满足不了定制化的视觉需求&#xff0c;达不到视觉产品的信息传…

《代码整洁之道 Clean Architecture》-读书笔记

大家好&#xff0c;我是烤鸭&#xff1a; 关于《代码整洁之道》&#xff0c;记录一下读书笔记。 代码整洁之道第一章 整洁代码整洁代码的艺术第二章 有意义的命名避免误导有意义的区分使用读得出来和可搜索的名字避免使用编码第三章 函数第四章 注释第五章 格式第六章 对象和数…