黑马程序员_字符编码

---------- android培训java培训、java学习型技术博客、期待与您交流! ------------

字符编码

 1.字符流的出现是为了方便操作字符。
 2.更重要的是加入了编码转换。
 3.通过子类转换流来完成。
   3.1:InputStreamReader
   3.2:OutputStreamWrirer
 4.在两个对象进行构造的时候可以加入字符集。


一:编码表的由来
 1.计算机只能识别二进制数据,早期由来是电信号。
 2.为了方便应用计算机,让它可以识别各个国家的文字。
 3.就将各个国家的文字用数字来表示,并一一对应,形成一张表,即编码表


二:常见的编码表
 1.ASCII:美国标准信息交换码
   用一个字节的7位可以表示
 2.ISO8859-1:拉丁编码。欧洲编码表
   用一个字节的8位表示
 3.GB2312:中国的中文编码表
 4.GBK:中国的中午编码表升级,融合了更多的中文文字符号,包括各个民族的
 5.Unicode:国际标准码,融合了多种文字。
   所有文字都用两个字节来表示,java语言使用的就是Unicode
 6.UTF-8:最多用三个字节来表示一个字符
 
三:转换流的编码应用
 1.可以将字符以指定的编码格式存储。
 2.可以对文本数据指定编码格式来解读。
 3.指定编码表的动作由构造函数来完成。
 eg:
    public static void readText() throws IOException
{
        InputStreamReader isr=new InputStreamReader(new FileInputStream("utf.txt"),"UTF-8");
char[]buf=new char[10];
int len=isr.read(buf);
String str=new String(buf,0,len);
        System.out.println(str);
isr.close();
}
public static void writeText() throws IOException
{
OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream                                ("utf.txt"),"UTF-8");
osw.write("你好");
osw.close();
}
    // 如果文件出现乱码,说明编码和解码采用的编码标准不一致


四:编码解码
 1.编码:字符串变为字符数组
   解码:字符数组变为字符串
   String-->byte[];  str.getBytes(charsetName);
   byte[]-->String:  new String(byte[] , dharsetName);
 2.getBytes():使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组   中。
 3.getBytes(String charsetName):使用指定的字符集将此 String 编码为 byte 序列,并将结果存储到一个   新的 byte 数组中。
 eg:
    public static void main(String[] args) throws IOException
{
        String s="你好";
byte[] b1=s.getBytes("GBK");
System.out.println(Arrays.toString(b1));
String s1=new String(b1,"utf-8");
System.out.println("s1="+s1);
//对s1进行iso8859-1编码
        byte[]b2=s1.getBytes("utf-8");
System.out.println(Arrays.toString(b2));
String s2=new String(b2,"gbk");

System.out.println("s2="+s2);


----------------------- android培训java培训、java学习型技术博客、期待与您交流! ----------------------

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值