java ByteArrayOutputStream从压缩文件中读取到字节数组,转换成字符串后再转换成数组发现数据不一样了

javaByteArrayOutputStream从压缩文件中读取到字节数组,转换成字符串后再转换成数组发现数据不一样了;用的UTF-8编码StringsplitData... java ByteArrayOutputStream从压缩文件中读取到字节数组,转换成字符串后再转换成数组发现数据不一样了;用的UTF-8编码
String splitData = new String(byteArray, "ISO8859-1");
String splitData2 = new String(byteArray, "UTF8");

byte[] bytes1 = splitData.getBytes("ISO8859-1");
byte[] bytes2 = splitData2.getBytes("UTF8");

System.out.println(bytes1.length+"-"+bytes2.length);
结果2个数组长度不一样
展开
 我来答
小童鞋_成er
2014-08-06 · 知道合伙人数码行家
小童鞋_成er
知道合伙人数码行家
采纳数:4650 获赞数:22878
主要从事J2EE工作,热爱Java,用心讨论技术,共同进步。

向TA提问 私信TA
展开全部
您好, 提问者:
ISO8859-1是占1个字节。
而UTF-8的汉字是占三个字节。
GBK的汉字的是占两个字节,当然不一样了。
//转换
new String(splitData.getBytes("ISO8859-1"),"UTF-8");
追问
谢谢,我的字节数组先转换成字符串,字符串再用同样编码得到字节数组,不明白为什么不同的编码会有不同的结果
追答
因为不同国家所出的语言对应表。
最全的是accis,GBK有的中文字不是别,加强是UTF-8。
hanwei_0311
推荐于2016-08-31 · TA获得超过292个赞
知道小有建树答主
回答量:178
采纳率:100%
帮助的人:137万
展开全部
byte数组转字符串在特定情况下是可以的,byte的内容全部可以用字符表示,否则的话,转换的时候,有些无法用字符表示的数据,在转换的过程中就会出现问题。
如果需要转字符串,可以对byte数组进行base六十四编码,这个base六十四编码的byte可以全部用字符表示,转成字符串,需要的时候,把字符串进行base六十四解密,可以得到原来的byte数组
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式