zoukankan      html  css  js  c++  java
  • 黑马程序员——JAVA基础之编码表

    ------- android培训java培训、期待与您交流! --------- 

    字符编码

    字符流的出现为了方便操作字符。

    更重要是的加入了编码转换。

    通过子类转换流来完成。
    •  InputStreamReader

    •  OutputStreamWriter

    在两个对象进行构造的时候可以加入字符集。

    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    
    class EncodeStream 
    {
    	public static void main(String[] args) throws IOException 
    	{
    			writeText();
    			readText();
    	}
    
    	public static void readText()throws IOException 
    	{
    		InputStreamReader isr = new InputStreamReader(new FileInputStream("utf.txt"),"gbk");
    
    		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();
    	}
    
    }
    


     

    编码表的由来

    计算机只能识别二进制数据,早期由来是电信号。

    为了方便应用计算机,让它可以识别各个国家的文字。

    就将各个国家的文字用数字来表示,并一一对应,形成一张表。

    这就是编码表。

    常见的编码表

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

    ISO8859-1:拉丁码表。欧洲码表•  用一个字节的8位表示。

    GB2312:中国的中文编码表。

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

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

    UTF-8:最多用三个字节来表示一个字符。

    ......

    转换流的编码应用

    可以将字符以指定编码格式存储。

    可以对文本数据指定编码格式来解读。

    指定编码表的动作由构造函数完成。

    字符编码

    编码:字符串---->字节数组   String-->byte[];  str.getBytes(charsetName);

    解码:字节数组---->字符串   byte[] -->String: new String(byte[],charsetName);

    import java.util.Arrays;
    
    
    class  EncodeDemo
    {
    	public static void main(String[] args)throws Exception 
    	{
    		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);
    
    		
    
    	}
    }
    


    class EncodeDemo2 
    {
    	public static void main(String[] args) throws Exception
    	{
    		String s = "联通";
    
    		byte[] by = s.getBytes("gbk");
    
    		for(byte b : by)
    		{
    			System.out.println(Integer.toBinaryString(b&255));
    		}
    
    
    		System.out.println("Hello World!");
    	}
    }
    


    ------- android培训java培训、期待与您交流! --------- 

  • 相关阅读:
    简单的方法爬取b站dnf视频封面步骤解释
    ROS讲座 关于ROS2和Gazebo C++ in Open Source Robotics
    深圳3分钟完成港澳签注 24小时自助办证服务攻略
    如何建立数据平台?看上市公司的选择!
    从开发转型到技术总监的迷茫
    计算机控制技术课程解释与问题答疑
    深度剖析 | 基于大数据架构的BI应用
    Android系统开机启动流程及init进程浅析
    经验分享 | 如何搭建企业管理驾驶舱
    android 修改framework下资源文件后如何编译
  • 原文地址:https://www.cnblogs.com/runwind/p/4212176.html
Copyright © 2011-2022 走看看