前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java转换流_java中的字符使用什么编码

Java转换流_java中的字符使用什么编码

作者头像
全栈程序员站长
发布2022-10-01 14:29:35
8150
发布2022-10-01 14:29:35
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

编码转换流

字节流:针对二进制文件 字符流:针对文本文件,读写容易出现乱码的现象,在读写时,最好指定编码集为UTF-8

1 概述

代码语言:javascript
复制
编码转换流(InputStreamReader/OutputStreamWriter)主要进行编码的转换,用来解决字符流读写乱码的问题

2 工具API学习

OutputStreamWriter : OutputStreamWriter(OutputStream out)把传入的字节流转成字符流 OutputStreamWriter(OutputStream out ,String charsetName)把Unicode转成其他编码输出

InputStreamReader : InputStreamReader(InputStream in) 把传入的字节流转成字符流 InputStreamReader(InputStream in,String charsetName)读取其他编码转成Unicode

3 常见字符编码表

在这里插入图片描述
在这里插入图片描述

4 练习:编码转换测试

创建包: cn.tedu. encoding 创建类: TestEncode.java

代码语言:javascript
复制
package cn.tedu.encoding;
import java.io.*;
/*本类用于测试编码转换流*/
public class TestEncode { 

public static void main(String[] args) { 

method1();//用来测试OutputStreamWriter
method2();//用来测试InputStreamReader
}
private static void method2() { 

//1.创建一个在本方法中都生效的局部变量,并给变量初始化
InputStreamReader in = null;
//2.由于IO操作可能会抛出异常,所以需要try-catch-finally结构
try{ 

//3.创建针对于输入流的编码转换流对象
in = new InputStreamReader(
new FileInputStream("1.txt"),"utf-8");
//new FileInputStream("1.txt"),"gbk");
//new FileInputStream("1.txt"),"iso-8859-1");
//4.使用流读取数据,并将读取到的信息打印在控制台
//read方法的返回值类型是int,打印的是编码
//UTF-8-28023 gbk-23092 iso-8859-1-230
//System.out.println(in.read());
//拓展:将刚刚读到的数据,以中文的格式展示在控制台
char[] ch = new char[8192];
//Reader中的方法:read(char[] cbuf)将字符读入数组,返回读取到的字符的个数
int len = in.read(ch);//len保存的是读取到的字符的个数
//此处是String的构造函数,利用ch数组中的数据,构建一个字符串,并打印到控制台
System.out.println(new String(ch,0,len));
System.out.println("恭喜您!成功读取!");
}catch (Exception e){ 

System.out.println("很抱歉!读取失败!");
e.printStackTrace();
}finally { 

//5.关流
try { 

in.close();
} catch (IOException e) { 

e.printStackTrace();
}
}
}
private static void method1() { 

//1.创建一个在本方法中都生效的局部变量,并给变量初始化
OutputStreamWriter out = null;
//2.由于代码可能会产生IO异常,所以需要完成try-catch-finally结构
try{ 

//3.创建流对象
out = new OutputStreamWriter(
new FileOutputStream("1.txt"),"utf-8");
//new FileOutputStream("1.txt"),"iso-8859-1");
//new FileOutputStream("1.txt"),"gbk");
//4.使用流对象写出数据
out.write("海绵宝宝与派大星");
System.out.println("执行成功!");
}catch (Exception e){ 

System.out.println("执行失败!");
e.printStackTrace();
}finally { 

//5.关流
try { 

out.close();
} catch (IOException e) { 

e.printStackTrace();
}
}
}
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/194817.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月11日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 编码转换流
    • 1 概述
      • 2 工具API学习
        • 3 常见字符编码表
          • 4 练习:编码转换测试
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档