Jar包中文乱码问题
项目上遇用winrar修改替换jar中一个中文文件名后出现jar包解压读取错误问题,被这个问题纠缠了两次,都是现场比较情急的情况,于是就研究一下彻底弄清楚这个问题。中间也网上搜过一些内容,但实际测试不管用,可能遇自己电脑环境有关吧。
首先要明确jar文件本质上是在zip文件基础上增加了一些元数据描述信息文件,而zip文件本身也没有包含编码信息,它使用系统默认编码打开处理,在win系统下默认是gbk,而在linux下默认就是utf-8。
我通过java的jar命令创建打开更新jar文件时默认都是用的utf-8,并且Java本身jdk包中的JarFile类不能指定编码只能用utf-8来处理,如果jar包不是这种格式在解析jar包中元素时就会抛出异常。在本机windows环境下,分别在eclipse(工程默认是utf-8)和命令行窗口执行class文件(系统默认编码是GBK),发现使用ZipFile(JDK6以上可以设置编码方式,JarFile无法设置编码参数)读取Jar文件在不用winrar修改前无论是用utf-8还是GBK编码都能正常解析,然后用winRar修改其中含有中文的文件名,此时用GBK编码方式可以正常读取,当用UTF-8编码读到中文文件名时会抛异常。
另外,看到网上有说在执行jar命令或mvn package命令时增加-Dfile.encoding=utf-8来设置编码的,亲测在本机环境下不成功,首先jar命令没有-D这样的参数用法;mvn package的编码是直接在pom文件中设置的。
Jar包中文乱码问题的更多相关文章
- 记一次Maven发布Jar包中文乱码解决方法
Maven deploy 乱码 今天使用Maven发布Jar包时,发布功能都是正常的也成功上传到了仓库,就是项目跑越来后出中文中现了乱码: { "code": "SUCC ...
- jar 包中文乱码注释显示问题解决方案
通过maven下载源代码,直接通过eclipse浏览源代码时,发现中文注释为乱码的问题.其实这个eclipse默认编码造成的问题.可以通过以下方法解决: 修改Eclipse中文本文件的默认编码:win ...
- eclipse查看jar包源代码乱码问题解决
文章来源 今天在eclipse中查看java的jar包中的源代码时,显示的全部是乱码.起初只设置了content types还不行,还是乱码.不过问题最后解决了,配置步骤如下: 首先要知道你需要配置的 ...
- Eclipse导入的工程后referenced libraries中的jar包中文注释显示乱码解决方法
Preferences-General-Workspace-Text file encoding 设置为uft-8 最后重启一下eclipse.
- eclipse打开jar包出现乱码问题解决方法
今天做项目时候,用eclipse打开.class文件出现乱码问题.jar编码和本地编辑器编码格式不对造成的错误. 首先我们打开eclipse,点击菜单下的window-->preferences ...
- Ubuntu解压zip包中文乱码
解决方法:通过unar 工具解压 步骤一: 安装unar: sudo apt-get install unrar 步骤二: 解压(以test.zip为例):unar test.zip 解压成功,乱码问 ...
- 4-fiddler抓包中文乱码:
接受到的html被压缩了,要解压,在工具栏有decode
- IDEA 直接点击运行执行正常,命令行下面执行Jar包出现部分乱码的情况。
解决方案如上: 有个Springboot项目为了测试方便,模型类用中文作为字段属性,封装成Odata格式,在通过Springboot发布并打成jar包. 通过命令行启动jar包里面的Springweb ...
- Fiddler使用方法之Fiddler显示IP,Fiddler中文乱码解决方法以及Fiddler模拟发送get/post请求
Fiddler是一个HTTP的调试代理,以代理服务器的方式,监听系统的Http网络数据流动,是我们常用的抓包工具之一 今天为大家分享一下几个使用Fiddler的小技巧 一.Fiddler抓包中文乱码问 ...
随机推荐
- 新安装数据库sqlserver2008r2,使用javaweb连接不上问题处理
鼠标右键[计算机]-->[管理],打开界面如下: 选择自己数据库的实例名: 选择TCP/IP:右键[属性],将所有TCP动态端口的[0]删掉,TCP端口设为1433:重启服务,即可连接. PS: ...
- 09Microsoft SQL Server 表数据插入,更新,删除
Microsoft SQL Server 表数据插入,更新,删除 向表中插入数据 INSERT INTO insert into tb1 values(0004,'张凤凤') insert into ...
- Unity中播放带有alpha通道格式为Mp4的视频
问题: Unity中实现播放透明的MP4视频时出现黑点 解决办法: 使用Unity自带的shader去除黑点 1:shader代码如下所示 Shader "Unlit/NewUnlit ...
- Autolayout性能优化
客户的需求就是我们进步的动力.最近有客户提出大数据量Topo图的自动布局问题,在Topo中除了Node.Link,还包括Group.Subnetwork等容器组件.在这样的情况下,我们抛开布局算法不谈 ...
- ListView常用属性 (2012-01-12 17:20:27)
比较特别的属性,通过设置这样的属性可以做出更加美观的列表.stackFromBottom——设置该属性之后你最新条目就会显示你列表的最下面,值为true和false,如android:stackFro ...
- NOIP 2018 真・退役记
目录 NOIp 2018 真・退役记 7.01 7.05 \(summary\) 7.12 7.18 7.26 - 7.27 8.2 8.3 8.3 8.7 8.9 8.20 8.24 8.27 8. ...
- printf函数压栈(i++/i--,++i/--i) 终极解密
#include <stdio.h> void main() { ; printf("%d %d %d %d\n", i, --i, i, i--); } 输出是“3 ...
- STL二分查找函数的应用
应用二分查找的条件必须是数组有序! 其中二分查找函数有三个binary_serch,upper_bound,lower_bound 测试数组 int n1[]={1,2,2,3,3,4,5}; int ...
- Linux命令学习(2): scp和rsync基本用法与断点续传
版权声明:本文为博主原创文章,未经允许不得转载. 引子 在平常的工作中,我经常需要在远程服务器和本地之间传输文件. 以前我都使用scp命令,直到今天因为网络中断,scp出现了stalled. 因为上传 ...
- 洛谷 1569 [USACO11FEB]属牛的抗议
[题解] 非常显然的DP,f[i]表示到第i个位置最多分成几组,f[i]=Max(f[i],f[j]+1) (j<i,sum[j]<=sum[i]) #include<cstdio& ...