Linux与Windows系统字符集的简要学习
背景
最近同事反馈公司的产品再更新了mysql-8.0.31的驱动jar包后部分功能报错.
问题核心原因 研发这边石磊老师已经找到了.
结论是Mysql8.0.26之后的数据库驱动好像会识别操作系统的编码格式.
进而会导致尤其是stringbuilder等对象的序列化与反序列化的问题.
这里想简单复盘一下. 加强对编码格式的学习和了解.
问题现象
最开始的数据库驱动版本是 mysql-8.0.23
最近为了安全与性能升级到 mysql-8.0.31
大部分功能没问题. linux系统下也么有问题.
但是Windows系统下面的程序就报错了.
查过表的字符集, 数据库的字符集, 甚至是列的字符集都没有问题
show full columns from table_name
均是符合要求的utf8mb3字符集
(知道utf8mb4,但是产品有他的局限性.)
问题解决
可以使用 启动脚本增加 -Dfile.encoding=UTF-8
或者是 降级Mysql的驱动到 8.0.23 就可以.
问题推测
获取系统的编码格式:
Windows: chcp
Linux: local
注意: 活动代码页 936 代表的就是GBK编码格式
很多解压缩会出现乱码需要使用
unzip -O CP936 xxxx.zip 的核心原理是一样的
CP 的含义就是code page
需要注意的一点是:
Windows诞生的比utf8编码格式要早很多.
他的国际化也一直沿用了比较早的语言编码格式.
Linux诞生的比Windows和utf8都要晚很多.
所以Linux很多默认的编码格式都是utf-8的
Linux再现问题
尝试修改Linux系统的编码格式.
网上的很多办法都不太好用.
我这边的方式为:
cat >/etc/profile.d/gbk.sh <<EOF
export LANG=zh_CN.GBK
EOF
source /etc/profile.d/gbk.sh
然后系统内验证一下 locale得出的结果为:
[root@centos7ver2009 myapp]# locale
LANG=zh_CN.GBK
LC_CTYPE="zh_CN.GBK"
LC_NUMERIC="zh_CN.GBK"
LC_TIME="zh_CN.GBK"
LC_COLLATE="zh_CN.GBK"
LC_MONETARY="zh_CN.GBK"
LC_MESSAGES="zh_CN.GBK"
LC_PAPER="zh_CN.GBK"
LC_NAME="zh_CN.GBK"
LC_ADDRESS="zh_CN.GBK"
LC_TELEPHONE="zh_CN.GBK"
LC_MEASUREMENT="zh_CN.GBK"
LC_IDENTIFICATION="zh_CN.GBK"
LC_ALL=
然后在这个shell上面启动服务进行验证.
nohup ./startup-linux.sh >locale_gbk_startup.log &
问题确认
导致具体问题的原因不是很清楚.
但是发现跟数据库版本.和系统版本其实关系不大.
只不过因为默认的系统编码格式不一致导致了问题.
编码格式,时区,字符集,字体 其实都很关键.
有差异都会导致产品出现不一致的情况.
Linux与Windows系统字符集的简要学习的更多相关文章
- linux 和windows系统下同时可用的UML建模工具(umbrello),超强
原文地址:linux 和windows系统下同时可用的UML建模工具(umbrello),超强 作者:zhangjiakouzf OPEN SOURCE 的 UML建模工具 -- umbrello ...
- 在Linux和Windows系统上安装Nginx服务器的教程
在Linux和Windows系统上安装Nginx服务器的教程 1.在CentOS系统上安装Nginx 在 CentOS6 版本的 EPEL 源中,已经加入了 nginx 的 rpm 包,不过此 RP ...
- Linux和Windows系统的远程桌面访问知识(转载)
为新手讲解Linux和Windows系统的远程桌面访问知识 很多新手都是使用Linux和Windows双系统的,它们之间的远程桌面访问是如何连接的,我们就为新手讲解Linux和Windows系统的 ...
- 深度剖析Linux与Windows系统的区别
当我们每个人接触Linux之前,应该先接触的都是windows吧?但我们一般接触Linux后,习惯linux的管理和使用方法后,我们再回过头再来使用windows的时候,内心其实是拒绝的.我们会觉得图 ...
- 深度剖析Linux与Windows系统的区别,新手必读!
当我们每个人接触Linux之前,应该先接触的都是windows吧?但我们一般接触Linux后,习惯linux的管理和使用方法后,我们再回过头再来使用windows的时候,内心其实是拒绝的.我们会觉得图 ...
- linux和windows系统的区别
在21世纪的今天,互联网可以说是当代发展最为迅速的行业,举个很简单的例子,现在的我们不论什么年龄阶层,几乎人手都有一部手机,上面的某博,某音,末手等软件,更是受到多数人的热爱,并且人们不仅仅用其来消遣 ...
- 使用Samba服务实现Linux与Windows系统之间的文件共享
使用Samba服务口令验证方式可以让共享文件更加的安全,做到仅让信任的用户访问,而且验证过程也很简单,要想使用口令验证模式,我们需要先需要创建Samba服务独立的数据库. 第一步:安装Samba服务软 ...
- linux连接Windows系统之项目连接
在桥接模式下 在linux内需要设置 防火墙关闭 在Windows中连接 linux的ip连接 ***项目 在linux中命令行输入setup-->防火墙配置-->空格-->确定-- ...
- linux、windows系统间传输文件
日常工作中经常涉及到系统间的文件传输,下面就简单说一下常用的方法 linux--windows 工具:winscp.SecureCRT.Zmodem(sz, rz) linux--l ...
- 在Linux和Windows系统中输出目录结构
前言 一直以来就想在写文章时,能以文本形式(而不是截图)附上项目的目录结构,今天终于知道怎么操作了,在这分享一下. Linux 首先说下Linux上输出目录结构的方法. yum安装tree 需要支持t ...
随机推荐
- 数仓ETL系统:给强大的“心脏”配上“超级流水线”
摘要:在数据仓库平台建设过程中,数据的加载.卸载,各层数据模型之间的数据流转,业务规则的实现等等数据加工过程都会以ETL任务的方式实现. 一.前言 在数据仓库平台建设过程中,数据的加载.卸载,各层数据 ...
- CANN5.0黑科技解密 | 高并发图片视频处理,为出行保驾,为生活添彩!
摘要:华为推出昇腾AI基础软硬件平台(昇腾AI处理器+异构计算架构CANN),不仅能高效承接各类人工智能计算任务,还可两招解决以上图像处理面临的诸多问题. 四通八达的路网和车水马龙的盛景诠释着城市的繁 ...
- 湖仓一体天花板,大数据一站式SQL分析技术实践
摘要:本文将详细阐述HetuEngine在实现一站式SQL分析所面临的挑战.技术架构和案例. 本文分享自华为云社区<[华为云Stack][大架光临]第7期:湖仓一体天花板,大数据一站式SQL分析 ...
- 火山引擎 LAS Spark 升级:揭秘 Bucket 优化技术
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 文章介绍了 Bucket 优化技术及其在实际业务中的应用,包括 Spark Bucket 的基本原理,重点阐述了火 ...
- 电商流量分析怎么做?试试这款数据工具 DataLeap!
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 作为成熟的电商模式,货架场景可以让商家以更低的门槛入驻,让消费者完成更高销量的购买和复购. 在这一场景下,运营人员 ...
- Hugging Face CEO: 2024 将是AI丰收年
来自CEO的新年祝福 ️附加了他对于2024年人工智能界的四大预测你觉得2024年人工智能和机器学习界会是什么样的呢?欢迎留言
- 协同导航定位技术:为GPS定位盲区而生
导航技术和我们的生活息息相关.行人导航系统是一种为行人提供导航服务的便携式设备,可以适应地下.矿洞等卫星信号拒止的地区,以及大商场等拓扑结构复杂的地区,通常基于MIMU实现,本质上是惯性导航系统的一种 ...
- 哈佛大学《CS50 Python人工智能入门》公开课 (2020)
课程介绍 本课程探讨现代人工智能基础上的概念和算法,深入探讨游戏引擎.手写识别和机器翻译等技术的思想.通过实践项目,学生在将图形搜索算法.分类.优化.强化学习以及其他人工智能和机器学习的主题融入到他们 ...
- redis之列表 redis之hash redis其他操作 redis管道 django中使用redis celery介绍和安装 celery快速使用 celery包结构
目录 昨日回顾 今日内容 1 redis之列表 2 redis之hash 3 redis其他操作 4 redis 管道 5 django中使用redis 6 celery介绍和安装 7 celery快 ...
- 干掉大小流切换 I 帧!阿里云 RTC QoS 及视频编码联合优化之切流编码
如果要在两条分辨率不同的视频流之间切换,尽管这两条流的画面内容基本一样,但是由于两条流的参考帧不同,分辨率不同,目前所有的视频编码标准都无法做到利用帧间预测编码得到编解码匹配的结果,而帧内预测编码即 ...