1.什么是字符集?
答:计算机底层是不能直接存储字符的,只能通过一串的0和1去储存,这些0和1组合起来的就是字符集。
2.ASCII字符集(美国信息交换标准代码)。
答:包含了数字、英文、符号。1个字节储存1个字符。总共可以表示128个字符。
3.GBK(中国的码表)
答:Windows默认的码表,兼容了ASCII字符集。包含了几万个汉字。也支持繁体汉字和部分日韩文字。1个中文以2个字节的形式存储。英文和数字在哪里都占1个字节。
4.Unicode码表(万国码、统一码)
答:全世界通用。计算机科学领域的一项业界字符码标准。容纳世界上常见的文字和符号。常用的就是UTF-8(技术人员都应该使用这个)。兼容了ASCII字符集。1个中文以3个字节的形式存储。英文和数字在哪里都占1个字节。
5.字节和字符的区别?
字节:表示一种计量单位,表示在计算机存储中占用多少。
字符:举个例子:我,1,q,¥%……这些都属于字符。
6.注意点
1.编码前和编码后的码表要一致,要不然会出现乱码。
例子:
idea默认的UTF-8转成字节和GBK测试。
package bao; import java.io.UnsupportedEncodingException; import java.util.Arrays; public class Test { public static void main(String[] args) throws UnsupportedEncodingException { //默认为UTF-8 String name ="大弦嘈嘈如急雨,小弦切切如私语,1"; //转化为字节例子 byte[] bytes = name.getBytes(); System.out.println(bytes.length);//输出字节长度(中文1个字符占3个字节,那就是16*3+1=49) System.out.println(Arrays.toString(bytes));//具体展现每个字节位置 //默认UTF-8转成GBK例子 //1.转码:指定转成GBK byte[] g = name.getBytes("GBK");//会出现异常,抛出就好 //2.解码:指定转回GBK String s = new String(g,"GBK"); System.out.println(s); } }
运行结果:
49
[-27, -92, -89, -27, -68, -90, -27, -104, -120, -27, -104, -120, -27, -90, -126, -26, -128, -91, -23, -101,-88, -17, -68, -116, -27, -80, -113, -27, -68, -90, -27, -120, -121, -27, -120, -121, -27, -90, -126, -25, -89, -127, -24, -81, -83, -17, -68, -116, 49]
旁白:这些码表就是把我们要输入的文字字符等翻译成计算机能懂的二进制去执行。就是一个翻译官。