为了更多地了解Java中的字节,字符串和字符串,我采用了一个示例byte []并转换为String,然后将字符串转换为byte []。但是我意识到原始byte []和new byte []不相同。为什么?任何帮助。
import java.io.UnsupportedEncodingException;
public class HelloWorld{
public static void main(String []args) throws UnsupportedEncodingException{
byte [] originalStringBytes = {39, -94, 17, -18, 43, 32, 50, -70, 31, -125, -46, 10, -23, 32, -112, 63};
//Convert into string
String convertedString = new String (originalStringBytes, "UTF-8");
//Now again get the bytes back from string
byte [] afterStringConversionBytes = convertedString.getBytes("UTF-8");
//compare two byte array, both are not same
if(originalStringBytes.length == afterStringConversionBytes.length) {
System.out.println("SAME");
} else {
System.out.println("DIFFERENT");
}
}
}
它为我打印了“不同”。
答案 0 :(得分:2)
字节序列必须遵循严格的规则才能成为有效的utf-8编码文本。您在数组中拥有的内容不遵循这些规则,并且不会在不丢失信息的情况下转换为字符串。
中解释了这些规则