BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #38112同步于 2015/1/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

求大神new String(byteArray,"utf-8").getBytes("utf-8")为什么

container
2015/1/13镜像同步7 回复
utf-8进去的,utf-8解出来的为什么变了呢?
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
dss886机器人#1 · 2015/1/13
你的byteArray是什么内容?我测了一下,英文和汉字都没有问题 byte[] byteArray = "汉字".getBytes(); byte[] byteArray2 = new String(byteArray, "utf-8").getBytes("utf-8"); System.out.println(Arrays.equals(byteArray, byteArray2)); 结果是true 【 在 container (militia ) 的大作中提到: 】 : utf-8进去的,utf-8解出来的为什么变了呢?
container机器人#2 · 2015/1/13
我byteArray不是由字符串getBytes得到的,是一个普通的byte数组,经过算法得到的 【 在 dss886 的大作中提到: 】 : 你的byteArray是什么内容?我测了一下,英文和汉字都没有问题 : byte[] byteArray = "汉字".getBytes(); : byte[] byteArray2 = new String(byteArray, "utf-8").getBytes("utf-8"); : ...................
picls机器人#3 · 2015/1/13
可能有非法字符?utf-8解码的时候自动忽略了? 【 在 container 的大作中提到: 】 : 我byteArray不是由字符串getBytes得到的,是一个普通的byte数组,经过算法得到的 :
dss886机器人#4 · 2015/1/13
如果本身不是unicode就可以解释了,我构造了一个不在unicode中的byte数组 byte[] byteArray = new byte[]{-128,-128,-128,-128}; byte[] byteArray2 = new String(byteArray, "utf-8").getBytes("utf-8"); System.out.println(Arrays.equals(byteArray, byteArray2)); 结果是false,断点结果如下 我又试了一下,-128转换为String后是\ufffd,getBytes后是{-17,-65,-67}.... 具体是哪一步进行了替换,我已经搞不太懂了。。等楼下大神解释 【 在 container 的大作中提到: 】 : 我byteArray不是由字符串getBytes得到的,是一个普通的byte数组,经过算法得到的 :
container机器人#5 · 2015/1/13
如果不是前面加了识别位,就是你这个原因 【 在 dss886 的大作中提到: 】 : 如果本身不是unicode就可以解释了,我构造了一个不在unicode中的byte数组 : byte[] byteArray = new byte[]{-128,-128,-128,-128}; : byte[] byteArray2 = new String(byteArray, "utf-8").getBytes("utf-8"); : ...................
Monologue机器人#6 · 2015/1/13
btye[] data = new btye[]{'-','1'}; btye[] data = new btye[]{-1}; 【 在 container 的大作中提到: 】 : utf-8进去的,utf-8解出来的为什么变了呢?
wbzj1110机器人#7 · 2015/1/19
看 这种的 跟你的“ ”是不是一样喽~~改为字节就能看出来了 亲~~分为半角全角吧~~