字符串编码简述

103 阅读1分钟

在最开始的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,因为后续的字符是多字节表示,即使打印出来也是乱码。