Java特殊符号序列化



我想知道如何在java中序列化基元字符。我序列化了一个类,以了解字节信息是如何存储在java中的。下面是我连载的课。

public class Person implements Serializable{
char ch = (char) 128;
private String name = "abc" + ch;
private int age = 11;
public int getAge(){
return age;
}
public void setAge(int age){
this.age = age;
}
}

当我将其转换为字节数组时,的值

"abc"+ch

97 98 99-62-128

我想知道ch是如何用-62-128表示的"abc";根据它们的ASCII值表示,但ch如何使用-62-128 表示

Java字符串在默认序列化中使用UTF-8编码。

您可以在维基百科页面上看到UTF-8的完整规范摘要。

请注意,0x00和0x7F之间的字符按原样存储为一个字节,但字符0x80到0x07FF存储为两字节序列110xxxxx 10xxxxxx,其中"x"表示用于该范围内值的顺序十一位。

您的char 128在该范围内,其位序列为00010000000。因此,对应的两字节UTF-8序列是1100001010000000,或者-62,-128,如果您将它们解释为带符号的8位字符。

(Java版本的UTF-8实际上与Wiki上的一些特殊字符略有不同,但它不会影响这个字符串!(

最新更新