乱码是个啥

我们说的乱码,大部分其实都是中文乱码。

例如这次我遇到的,“北京” 两个汉字变成了 “鍖椾含”

出现乱码的原因

我们知道,电脑屏幕显示的汉字其实是由一个个像素点构成的。
而一个汉字其实对应一个字符码。
推导一下,每一个字符码对应一种像素点的组合方式。
如下图:

解码与编码

我们可以这样理解,把字符码变成像素点的过程就叫做"解码"
那么反之,像素点变成字符码的过程叫做"编码"

字符集

那么,咱们解码和编码不能瞎搞吧,0x666我解码成"好",过几天我又解码成"你",这样肯定是不行的。
我们需要一个统一的规则,这个规则就是"字符集"

逆向工程

简单思考一下

说了这么多,怎么处理 “北京” -->“鍖椾含” 这种乱码呢?
我们知道,"鍖椾含"肯定是由字符码 解码过来的。
那么我们就来看看究竟是啥样的字符码会被解码成这玩意。

编码

由像素点–>字符码的过程是编码,那我们就来进行编码。
额,问题来了。我们不知道这个字符集,也就是解码编码的规则。

系统字符集

其实,只要查看系统的字符集就可以了。
echo $LANG
我这里系统的字符集是gb2312。
我们开始进行编码,这里我们可以简单使用一下python。
不要害怕,非常简单的一个命令:
print("鍖椾含".encode("gbk"))
哎,有人说,你这里怎么用了gbk,不是gb2312吗?
gbk对gb2312是一种补充。尤其是对生僻字的补充。
这里三个字肯定是生僻字。。
编码出来的结果:
b'\xe5\x8c\x97\xe4\xba\xac'

大胆猜测,大胆试验

b'\xe5\x8c\x97\xe4\xba\xac'这个究竟是啥?
这个怎么和北京两个字扯上关系?
我们先考虑,字符码是怎么来的?
回到上面,字符码是 像素点编码得到的。
好,那我们开始对"北京" 进行编码。
print("北京".encode("gbk"))
b'\xb1\xb1\xbe\xa9'
两种编码不一致,看来不是gb2312这种规则。
print("北京".encode("utf8"))
b'\xe5\x8c\x97\xe4\xba\xac'
哦,看来问题已经明了了

复盘乱码的原因

北京 ----编码(utf8) ----解码(gbk) ----鍖椾含

解决方法

只要我们编码的时候,按照gbk的方式进行编码,那么再解码肯定就是对的了。

看看官网

我们去log4j2官网看看,我们使用的Appender是Syslog
链接: SyslogAppender.

我们看到,其中有个charset,我们把charset设置成gb2312。
不就可以把“北京”用gb2312方式编码了吗?
log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages=""><Appenders><Syslog name="SYSLOG" facility="LOCAL2" host="xxx.xxx.xxx.xxxx" port="xxx" protocol="UDP" charset="gb2312" /><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="%d{yyyy-MM-dd} [%t] %-5level %logger{36} - %msg%n" /></Console></Appenders><Loggers><Logger name="com.myApp" level="warn"><AppenderRef ref="SYSLOG"/></Logger><root level="error"><appender-ref ref="Console"/></root></Loggers>
</Configuration>

27 log4j2发送Syslog日志出现乱码错误相关推荐

  1. 演示:配置日志发送到syslog日志服务器

    演示目标:配置网络环境中的交换机和路由器将日志发送到syslog日志服务器. 演示环境:如下图10.54所示的演示环境. 演示背景:要求部署网络中的syslog服务器,集中的收集交换机S1和路由器R1 ...

  2. 升级到log4j2之后在idea控制台输出日志中文乱码的解决方案

    log4j升级到log4j2之后在idea编辑器的控制台输出日志中文乱码 问题概述: 项目组最近升级了日志系统,由log4j升级到了log4j2,在调试的过程中发现我用的idea编辑器的控制台输出中文 ...

  3. ESXi与Linux主机配置syslog日志上传远程服务器

    ESXi与Linux主机配置syslog日志上传远程服务器 https://www.conum.cn/cloud/vmware/148.html 前言 最近很多客户遇到等级保护监测,需要搭建日志服务器 ...

  4. linux syslog日志服务

    2019独角兽企业重金招聘Python工程师标准>>> 简介   不同的Linux发行版使用不同syslog程序来记录系统日志. 的Debain 4.0/Ubuntu8.04(桌面版 ...

  5. syslog日志服务

    syslog介绍 syslog是一种标准工业协议, 也可以说它是一款服务,它可以用来记录UNIX主机系统设备的日志信息,也可以检测网络设备,如交换机,路由器等.syslog协议也可以实现机器间通信,继 ...

  6. springboot+log4j2+阿里云日志

    1. springboot配置文件 log4j2可以有多个配置文件根据环境的不同(本地环境.测试环境.线上环境)可以选择不同的配置,在application中可以使用以下属性进行配置: logging ...

  7. 从libc-2.27.so[7fd68b298000+1e7000]崩溃回溯程序段错误segfault

    近期在外场试验过程中出现了一次进程退出的问题(在西安地面测试中也出现过一次),但是因为该问题不复现,后面就一直记着但没有进行闭环,也不清楚是异常退出还是因为资源消耗问题被系统杀死.这次回来之后有必要进 ...

  8. 同步syslog日志到服务端

    目录结构 前言 Windows下安装syslog服务端(Syslog Watcher Manager) java同步日志代码块 日志同步测试 前言 系统同步日志到syslog服务器,此文章记录以下内容 ...

  9. Linux syslog日志系统详解

    一. syslog简介 syslog是一种工业标准的协议,可用来记录设备的日志.在UNIX系统,路由器.交换机等网络设备中,系统日志(System Log)记录系统中任何时间发生的大小事件.管理者可以 ...

  10. 建立Windows下面的syslog日志服务器

    我们需要测试一种集中日志系统,要在Windows上建立一个类Linux下的集中日志系统. 经过比较Winsyslog和Kiwisyslog等工具,最终选定Kiwisyslog(http://www.k ...

最新文章

  1. PHP中的替代语法(冒号、endif、endwhile、endfor)
  2. 开源一个友盟 for android 操作的封装包
  3. Android 面试 - 有关Service的面试题
  4. 设计模式理解:模板方法
  5. kafka报错打开文件数过多导致kafka关闭
  6. my Lead add Lead test
  7. 路飞学院python官网-路飞学院-Python爬虫实战密训班-第1章
  8. I/O复用之 epoll
  9. 病毒c语言代码大全,谁有C语言编写的病毒源代码?
  10. SpringBoot2基础,进阶,数据库,中间件等系列文章目录分类
  11. Callback Functions Tutorial
  12. 面试题29. 顺时针打印矩阵/54. 螺旋矩阵
  13. VB中输入函数InputBox的用法
  14. 2021-09-02AUC
  15. 《嵌入式 - STM32开发指南》手把手教你搭建STM32开发环境 [Linux版 - 1]
  16. Mac谷歌浏览器chromedriver驱动安装教程,实现浏览器自动化
  17. Nginx+Tomcat实现负载均衡、动静分离集群部署
  18. 修改Thinkphp-cmf上传视频大小限制
  19. python内置库求复数的辐角_皮肤与美容—医学专家如是说_中国大学MOOC(慕课)_章节测验答案...
  20. Windows7 键盘快捷

热门文章

  1. android swf 文件播放器,swf播放器怎么用?swf播放器安卓版使用教程
  2. 什么是 CNC?什么是电脑锣?学 CNC主要学什么?
  3. nero burning rom 2021绿色版安装及使用教程
  4. 神经网络的发展与应用
  5. 智能机械按摩椅的改进设计
  6. Java 网络编程之Socket详解
  7. cs6导入库闪退 flash_flash cs6源文件怎么修复,导入老跳出意外格式,我是用flash cs6做的。我还有一半没有导出 swf 呢?...
  8. 解码隆基模式:光伏企业的百亿成长之路
  9. 股票分时数据HTML,股票历史分时数据
  10. sql查询优化7种方法