* 编码表:

* 信息在计算机上是用二进制表示的,这种表示法让人理解就很困难。为保证人类和设备,设备和计算机之间能进行正确的信息交换,人们编制的统一的信息交换代码,这就是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();
}
}

最新文章

  1. BZOJ 4205: 卡牌配对
  2. ajax data数据里面传一个json到后台的写法
  3. Swif基本语法以及与OC比较三
  4. sharepoint 2013 reporting services 远程server返回错误: (500) 内部server错误。
  5. hdu2845(dp)
  6. [Jmeter]jmeter之脚本录制与回放,优化(windows下的jmeter)
  7. Web前端总结(小伙伴的)
  8. gitbook初体验
  9. Switch-case 内定义变量的问题
  10. ap module omap4460
  11. 强化学习(十九) AlphaGo Zero强化学习原理
  12. Ubuntu16.04下修改MySQL数据的默认存储位置
  13. ELK6.0部署:Elasticsearch+Logstash+Kibana搭建分布式日志平台
  14. ef学习一
  15. java go
  16. mint下截图工具shutter的安装和使用设置
  17. HDU-3853-期望/dp/坑
  18. 20155214 2016-2017-2 《Java程序设计》第4周学习总结
  19. Bluetooth(android 4.2.2版本)
  20. Disconf实践指南:改造篇

热门文章

  1. Spring注解 - AOP 面向切面编程
  2. Canvas方法总结
  3. Ubuntu下搭建.Net Core环境并发布MVC项目
  4. Jenkins的凭证管理
  5. 移动端Rem适配(基于vue-cli3 ,ui框架用的是vant-ui)
  6. scrapy框架在未登录模式下爬取文本,文件和图片的几点收获
  7. List集合概述和特点
  8. eNSP 交换机 路由器 PC 互连设计/实现
  9. xmake v2.3.2 发布, 带来和ninja一样快的构建速度
  10. CF230B T-primes 题解