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 ...
随机推荐
- 基于DAYU的实时作业开发,分分钟搭建企业个性化推荐平台
摘要:搭建这个平台最费时耗力的事莫过于对批.流作业的编排,作业组织管理以及任务调度了.但是这一切,用DAYU的数据开发功能几个任务可通通搞定. 大多数电商类企业都会搭建自己的个性化推荐系统,利用自己拥 ...
- 解读顶会ICDE’21论文:利用DAEMON算法解决多维时序异常检测问题
摘要:该论文针对多维时序数据的异常检测问题,提出了基于GAN和AutoEncoder的深度神经网络算法,并取得了当前State of the Art (SOTA)的检测效果.论文是云数据库创新LAB在 ...
- 登录appuploader
转载:登录appuploader 常规使用登录方法 双击appuploader.exe 启动appuploader 点击底部的未登录,弹出登录框 在登录框内输入apple开发者账号 如果没有app ...
- 火山引擎 DataLeap 通过中国信通院测评,数据管理能力获官方认可!
近日,火山引擎大数据研发治理套件 DataLeap 通过中国信通院第十五批"可信大数据"测评,在数据管理平台基础能力上获得认证. "可信大数据"产品能力 ...
- IIS 设置超时时间
高级设置 => 限制 => 连接超时(秒),默认120秒,根据实际情况调整
- Axure 创建轮播图
拖一个动态面板,设置名称 双击动态面板,添加3个状态 给3个状态,分别添加3张图片 设置交互 新建交互 -> 载入时 -> 设置面板状态 双击进去,界面看得直观些 下一项.向后循环,循环间 ...
- 拥抱开放,Serverless 时代的下一征程
Serverless 作为云计算的最佳实践和未来演进趋势,其全托管免运维的使用体验和按量付费的成本优势使得它在云原生时代备受推崇.Serverless 的使用场景也由事件驱动,数据处理等部分特定场景转 ...
- vue tabBar导航栏设计实现5-最终版本
系列导航 一.vue tabBar导航栏设计实现1-初步设计 二.vue tabBar导航栏设计实现2-抽取tab-bar 三.vue tabBar导航栏设计实现3-进一步抽取tab-item 四.v ...
- vue2+高德地图web端开发
https://blog.csdn.net/qq_51553982/article/details/123014412
- C#利用控件实现柱形图分析
数据 { using (SqlConnection con = new SqlConnection("server=.;uid=sa;pwd=;database=db_TomeOne&quo ...