黑马程序员-编码

来源:互联网 发布:cnc数控编程 编辑:程序博客网 时间:2024/06/05 10:42
------- android培训、java培训、期待与您交流! ----------
编码表:
ASCII(美国标准信息交换码) 
ISO8859-1(拉丁码表 欧洲码表) 
GB2312(中文编码表) 
GBK(升级的中文编码表) 
Unicode(国际标准码) 
UTF-8 Unicode transform format with at least 8 bytes. 


"你好"用gbk码表占用4个字节,如果用utf-8解码显示??
"你好"用utf-8占用6个字节,如果用gbk解码显示"浣犲y"



编码:字符串变成字节数组


String-->byte[]


解码:字节数组变成字符串


byte[]-->String


TomCat服务器编码解码问题:
import java.util.*;class EncodeStreamDemo {public static void main(String[] args)throws Exception{String s1 = "你好";byte[] buf = s1.getBytes("gbk");//编码System.out.println(Arrays.toString(buf));String s2 = new String(buf,"iso8859-1");//服务器默认编码表解码时出现错误byte[] b = s2.getBytes("iso8859-1");//重新编码String s3 = new String(b,"gbk");//再用对应编码表解码System.out.println(s3);}}

字符编码之联通
import java.util.*;class EncodeStreamDemo {public static void main(String[] args)throws Exception{String s1 = "联通";byte[] buf = s1.getBytes("gbk");//编码for(byte b : buf){System.out.println(Integer.toBinaryString(b&255));}}}
utf-8的格式:
单个字节:0开头
两个字节:第一个字节:110开头 第二个字节:10开头
三个字节:第一个字节:1110开头,第二个字节:10开头,第三个字节:10开头
"你好"的gbk编码的对应二进制数字:
11000001
10101010
11001101
10101000
它正好符合utf-8的编码格式,记事本直接用utf-8来解码,就会出现解码错误。