黑马程序员-编码

------- 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来解码,就会出现解码错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值