在最开始的ascii 编码里面,一个字符对应一个字节,比如'A' 对应的字节是65 但是随着语言的越来越多,比如拉丁语言,中文等字符需要多个字节来表示一个字符
中文需要三个字节才能表示一个字符
emoji 字符需要四个字节才能表示一个字符
在网络通信的过程中,使用的是字节流进行传输,发送方需要对字符进行约定的编码,比如UNICODE 编码,然后转换成对应的字节;接收方接收到所有的字节流之后,通过编码的方式,将接收到的字节流转化成可以理解的字符;
char 2^16 byte -128~ 127
String hello = "Hello World!";
byte[] bytes = hello.getBytes(StandardCharsets.UTF_8);
String s = new String(bytes, StandardCharsets.UTF_8);
单个byte 转换成字符,会将byte 转换为 int,然后通过符号位补位,将其转换为对应的字符。
通常情况下这种方法只能处理ASCII,因为后续的字符是多字节表示,即使打印出来也是乱码。