java – 将byte []转换为String然后再转换为byte []

我正在使用代理服务器.我在byte []中获取数据,我将其转换为String以执行某些操作.现在,当我将这个新String转换回byte []时,它会导致未知问题.

所以主要是我需要知道如何正确地将abyte []转换为String然后再转换回byte [].

我试图将byte []转换为String然后再转换回byte [](以确保它不是导致问题的操作).

所以它就像:

// where reply is a byte[]

String str= new String(reply,0, bytesRead);
streamToClient.write(str.getBytes(), 0, bytesRead);

不等于

streamToClient.write(reply, 0, bytesRead);

当我发送byte []而没有任何转换时,我的代理工作正常,但是当我将它从byte []转换为String然后返回到byte []时会导致问题.

有人可以帮忙吗? =]

最佳答案
将byte []转换为String并返回byte []的最佳方法是不要这样做.

如果必须,您必须知道用于生成byte []的编码,否则操作使用平台默认编码,这会破坏数据,因为并非所有编码都可以编码所有可能的字符串,而不是所有可能的字节序列在所有编码中都是合法的.这就是你的情况.

至于如何找出编码,这取决于:

>如果您使用的是HTTP,请查看Content-Type header
>如果您的数据是XML,那么您应该使用XML解析器,它将为您处理编码
>如果您的数据是HTML页面,则可能还有一个<meta http-equiv>标题

如果没有办法找出编码,你有随机垃圾,而不是文本数据.

转载注明原文:java – 将byte []转换为String然后再转换为byte [] - 代码日志