【记录】关于编码格式导致的中文乱码问题
一. 问题描述
最近有个需求,解压压缩包提取其中的文件,处理rar、7z格式没啥问题,处理解压zip(项目中用的版本比较老)的时候,解压方法中需要传入编码格式,问题就来了。
使用windows系统打包zip和mac OS系统打包zip,在不手动设置编码格式的情况下(一般情况也没人会专门设置编码格式),windows系统默认编码格式为GBK
,mac OS默认编码格式是UTF-8
,GBK
编码,UTF-8
解码,如果文件名有中文就会出现乱码,反之亦然,这和2种编码格式的对中文编码的规则有关。
二. 解决方式
- 首先,默认windows系统编码格式为
GBK
,mac OS编码格式是UTF-8
,不考虑打包时变更编码格式; - 其次,zip解压方法传入编码格式为
ISO-8859-1
,为什么传入ISO-8859-1
,后面会解释; - 最后,通过判断是windows系统打包还是mac OS系统打包(mac OS打包解压后会出现
__MACOSX
文件夹,以此判断),对文件名进行重新编码。
当然,这种方式并不是一个完美的解决方案,对于不替换三方解压库,也算是一种强硬的解决方案。
三. 关于编码格式格式介绍
英文字母和中文汉字在不同字符集编码下的字节数,看表
编码格式 | 字符类型 | 字节数 |
---|---|---|
UTF-8
|
英文字母 | 1 |
UTF-8
|
中文汉字 | 3 |
GBK
|
英文字母 | 1 |
GBK
|
中文汉字 | 2 |
ISO-8859-1
|
英文字母 | 1 |
ISO-8859-1
|
中文汉字 | 1 |
3.1 产生乱码的原因
编码和解码使用的不是同一种编码格式,就会出现乱码
3.2 文字描述太累,直接上图
运行结果⬇️
结合上面的表和这两张图,再加上下面这篇文章的理论,相信聪明的你一定会有很大的收获。
如果有时间还是动手写一遍,针对不同的情况,比如奇数,偶数汉字
、奇数汉字+英文
、偶数汉字+英文
、英文+奇数汉字
、英文+偶数汉字
等之间的区别。
本次记录到此结束,⬇️【推荐并感谢】
UTF-8与GBK互转,为什么会乱码
如果文章对你有帮助,点个赞再走呗
如果文章中存在错误,还望评论区指出
一起成长,共同进步
【记录】关于编码格式导致的中文乱码问题相关推荐
- Mysql自动超时重连导致的中文乱码问题
Mysql自动超时重连导致的中文乱码问题 今天有客户反应从自选股服务器获取的自定义板块中文名称乱码,之前一直都是正常的.看到乱码两字,头脑中首先冒出来的就是查看mysql数据库中的编码集,输入SHOW ...
- Charset编码问题导致的中文乱码
环境:POST方法.Content-Type: application/x-www-form-urlencoded;charset=utf-8(key=val&key2=val2形式) 调用接 ...
- java locale中文_locale错误导致Java中文乱码错误的总结
线上执行MapReduce任务计算时,经过排查发现了某些服务器计算的数据出现中文乱码问题,但是服务器的配置是完全一致的.由于我们使用的key可能包含中文,中文乱码问题体现在每次合并map记录的时候计算 ...
- mac终端下修改MySQL的编码格式以解决中文乱码问题--找不到my-default.cnf及my.cnf
查看一下support-files文件夹(Finder下"前往文件夹";路径:/usr/local/mysql/support-files) 里面有没有my-default.cnf ...
- Spring MVC 3.2+ @ResponseBody 导致的中文乱码处理
2019独角兽企业重金招聘Python工程师标准>>> 问题原因是spring mvc中竟然使用了ISO-编码 这个问题看了好几个,有的配置AnnotationMethodHandl ...
- Oracle编码格式为US7ASCII中文乱码如何解决
最近有家医院HIS数据库编码是US7ASCII,头疼啊,Navicat都无法正常显示,琢磨了下.看到一个哥们写的文章后,实现了下,成功!JDBC查出来之后,用getAsciiStream获取输入流然后 ...
- java web乱码_【SpringBoot WEB 系列】RestTemplate 之中文乱码问题 fix
[WEB 系列]RestTemplate 之中文乱码问题 fix 在 RestTemplate 基础用法博文中,post json 表单时,会发现存在中文乱码问题,本文主要介绍对应的解决方案 I. 中 ...
- 从本机发送信息到另一台服务器上时中文乱码
2019独角兽企业重金招聘Python工程师标准>>> 从本机发送信息到另一台服务器上时中文乱码 别的电脑都没问题,只有本机通过sts开tomcat并发送信息到另一服务器时中文乱码. ...
- Dapper操作MySQL数据库获取JSON数据中文乱码
在项目中利用Dapper将JSON数据存储到MySQL数据库,结果发现JSON数据中的中文乱码,特此记录,希望对存储JSON的童鞋能有所帮助,文中若有错误之处,还望批评指正. 为了引出最终问题出在什么 ...
最新文章
- BFS之三(单向bfs和康托压缩)
- SAP医药医疗行业解决方案
- spring-boot入门之二——验证、AOP日志、异常处理
- profile 文件含义
- python pandas 拿取表格中两个列_在家憋着也是憋着,不如来学习一下python数据聚合的方法...
- python 基础 - 循环语句
- Spring Boot 2.0.0.M7 生产环境部署
- link要使用全路径
- ts文件怎么合并转换成mp4?
- 数据库课程设计:会议预约管理系统(Java+MySQL)
- java中常用的摘要算法
- vue运行报错冒号问题,browser.js:158 Uncaught SyntaxError: Unexpected token ‘:‘
- 分布式文件存储系统MinIO入门教程
- AURIX TriCore学习笔记四:LwIP裸机移植
- 试算平衡表示例图_案例十一试算平衡表
- Clion 调教记录
- JavaScript刮奖效果(jquery图片刮奖插件)
- ubuntu20.04开机黑屏解决方法
- MP4/QuickTime的“ftyp” 名称完整列表
- ui设计移动端字体适配_移动端UI设计尺寸规范(示例代码)