编码解码:
 编码:把看的懂得字符变成看不懂的码值过程我们称作编码
 解码:把码值对应的字符,称作解码
 
 注意:编码解码一般用统一的码表,否则容易出乱码

常见的码表如下:

ASCII:       美国标准信息交换码。用一个字节的7位可以表示。 -128~127  256

ISO8859-1:   拉丁码表。欧洲码表,用一个字节的8位表示。又称Latin-1(拉丁编码)或“西欧语言”。ASCII码是包含的仅仅是英文字母,并且没有完全占满256个编码位置,所以它以ASCII为基础,在空置的0xA0-0xFF的范围内,加入192个字母及符号,

藉以供使用变音符号的拉丁字母语言使用。从而支持德文,法文等。因而它依然是一个单字节编码,只是比ASCII更全面。

英文占一个字节,中文占两个字节。中国的中文编码表。

GBK:      中国的中文编码表升级,融合了更多的中文文字符号。

Unicode:  国际标准码,融合了多种文字。所有文字都用两个字节来表示,Java语言使用的就是unicode。

UTF-8:    英文占一个字节,中文占三个字节。    最多用三个字节来表示一个字符。

(我们以后接触最多的是iso8859-1、gbk、utf-8)

 

package bianmajiema;

import java.io.UnsupportedEncodingException;
import java.util.Arrays;

/*
 编码解码:
 编码:把看的懂得字符变成看不懂的码值过程我们称作编码
 解码:把码值对应的字符,称作解码
 
 注意:编码解码一般用统一的码表,否则容易出乱码
 
  */
public class Demo {

public static void main(String[] args) throws UnsupportedEncodingException {
	String str="a中国";
	byte[] b=str.getBytes("utf-8");//平台默认是GBK编码,可以指定utf-8编码
	System.out.println("数组元素:"+Arrays.toString(b));

   str=new String(b,"utf-8");//使用平台默认的编码集解码gbk,可以指定编码解码集
   System.out.println(str);

  String str1="a中国";//-2, -1, 0, 97, 78, 45, 86, -3,八个,在Unicode编码是开头两个都是-2,-1做标志,不管中英文都是两个字节;
  byte[] buf=str.getBytes("unicode");//编码与解码的时候指定的码表是Unicode,实际上就是使用了utf-16
  System.out.println("数组内容:"+Arrays.toString(buf));

  String str2="大家好";
  byte[] buff=str2.getBytes();//默认使用gbk编码
  str2=new String(buff,"iso8859-1");
  System.out.println(str2);
 //并不是所有被解码过得都可以编码,有的没有对应的字符就丢失了
  byte[] buf2=str2.getBytes("iso8859-1");
  str2=new String(buff,"gbk");
  
  
}	
	
}