• 35 编码 ASCII Unicode UTF-8 ,字符串的编码、io流的编码


    * 编码表:

    * 信息在计算机上是用二进制表示的,这种表示法让人理解就很困难。为保证人类和设备,设备和计算机之间能进行正确的信息交换,人们编制的统一的信息交换代码,这就是ASCII码表

    *ASCII 用十进制来存储二进制字符。 缺点:字符个数有限(只有字母数字符号,没有中文)

    * GB2312 有中文。 缺点:中国自己的,不够通用 *

          ----升级为 GBK

    * Unicode 多个国家统一编码 缺点:每个字符都占两个字节,资源浪费

    *       ---升级为 UTF-8

    *  ANSI:本地编码表 (gbk)

    * java的字符默认使用的ANSI(gbk)

    ASCII码表可参见:https://www.cnblogs.com/longesang/p/11057351.html 

    idea修改单个文件的编码格式

        点击右下角,设置的默认编码是utf-8,可以选择想要的格式进行切换。

        切换后只有当前文件格式会变,其他文件不会影响

      对单独文件的编码修改还可以点击右下角的编码设置区。如果代码内容中包含中文,则会弹出演示中的操作选择。
      Reload 表示使用新编码重新加载,新编码不会保存到文件中,重新打开此文件,旧编码是什么依旧还是什么。

      Convert 表示使用新编码进行转换,新编码会保存到文件中,重新打开此文件,新编码是什么则是什么。

      含有中文的代码文件,Convert 之后可能会使中文变成乱码,所以在转换成请做好备份,不然可能出现转换过程变成乱码,无法还原。

     一、字符串的编码,(使用字节流读写,对字符串进行编码转换)

    public class EncoderDemo {
        public static void main(String[] args) throws IOException {
            String s = "你好世界";
    //        byte[] bys = s.getBytes();
            byte[] bys = s.getBytes("GBK"); // byte[] getBytes() 使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
                                           //编码名称大小写不限制,但名字一定要写对否则会报错识别不到。
    
            FileOutputStream fos = new FileOutputStream("a.txt");
            fos.write(bys);
            fos.close();
        }
    }

    输出

      我本地默认编码UTF-8写入GBK

    读数据

     FileInputStream fis = new FileInputStream("a.txt");
            byte[] bys = new byte[1024];
            int len = fis.read(bys);
    
    //        System.out.println(new String(bys,0,len,"GBK"));
            System.out.println(new String(bys,0,len,"UTF-8"));//new String() 数组转字符串
    UTF-8

    GBK

    二、字符流的编码(使用io流的编码来转换

    字符流 = 字节流 + 编码
    package 编码问题;
    
    import java.io.*;
    
    /*
    * 字符流 = 字节流 + 编码
    *
    * */
    public class EncoderDemo2 {
        public static void main(String[] args) throws IOException {
    //        method();
    
            //使用io流的编码来转换
            OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("b.txt"),"GBK");//转换流,将字节转换为字节
            String s = "赢取白富美";
    
            osw.write(s);//写的是字符
            osw.close();
        }
    
        //对数据进行转换
        private static void method() throws IOException {
            FileWriter fw = new FileWriter("b.txt");
            String s = "你好世界";
            byte[] bys = s.getBytes("GBK"); // byte[] getBytes() 使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
    
            fw.write(new String(bys));//new String() 数组转化为字符串
    //        fw.write(s);
            fw.close();
        }
    }
  • 相关阅读:
    终于找到了一本PYTHON的中文书籍
    深圳测试协会第二次活动顺利举行
    Peer review
    如何在LINUX/UNIX上运行PYTHON程序
    CMMI各级关注的过程域(原创)
    深圳测试协会第三次活动顺利结束
    深圳测试沙龙第二期活动园满结束
    51testing软件测试沙龙
    sql中使用游标
    关于Asp.net 页面动态加载用户控件,出现“未能加载视图状态”的原因[续]
  • 原文地址:https://www.cnblogs.com/longesang/p/11327777.html
Copyright © 2020-2023  润新知