栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

暑期JAVA学习(26)转换流

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

暑期JAVA学习(26)转换流

转换流
    • (一)问题引出:不同编码读取乱码问题
      • (1)使用字符流读取中文是否有乱码?
      • (2)如果代码编码和文件编码不一致,使用字符流直接读取还能不乱码吗?
    • (二)字符输入转换流
      • (1)引入
      • (2)字符输入转换流简述
      • (3)字符输入转换流InputStreamReader作用
      • (4)具体使用
    • (三)字符输出转换流
      • (1)引入
      • (2)字符输出转换流
      • (3)字符输出转换流OutputStreamWriter的作用
      • (4)具体使用

(一)问题引出:不同编码读取乱码问题 (1)使用字符流读取中文是否有乱码?

●没有的,因为代码编码和文件编码都是UTF-8。

(2)如果代码编码和文件编码不一致,使用字符流直接读取还能不乱码吗?

●会乱码
●文件编码和读取的编码必须一致才不会乱码。

(二)字符输入转换流 (1)引入

①如果代码编码和文件编码不一致,使用字符流直接读取还能不乱码吗?

●会乱码

②如何解决呢?

●使用字符输入转换流
●可以提取文件(GBK)的原始字节流,原始字节不会存在问题。
●然后把字节流以指定编码转换成字符输入流,这样字符输入流中的字符就不乱码了

(2)字符输入转换流简述


●字符输入转换流:InputStreamReader,可以把原始的字节流按照指定编码转换成字符输入流

构造器说明
public InputStreamReader(InputStream is)可以把原始的字节流按照代码默认编码转换成字符输入流。几乎不用,与默认的FileReader一样
public InputStreamReader(InputStream is ,String charset)可以把原始的字节流按照指定编码转换成字符输入流,这样字符流中的字符就不乱码了(重点)
(3)字符输入转换流InputStreamReader作用

●可以解决字符流读取不同编码乱码的问题
●public InputStreamReader(InputStream is,String charset):
可以指定编码把原始字节流转换成字符流,如此字符流中的字符不乱码。

(4)具体使用



public class InputStreamReader {
    public static void main(String[] args) throws Exception {
        // 代码UTF-8   文件 GBK  "E:JAVA学习资料Day26.txt"
        // 1、提取GBK文件的原始字节流。
        InputStream is = new FileInputStream("E:\JAVA学习资料\Day26.txt");
        // 2、把原始字节流转换成字符输入流
        // Reader isr = new InputStreamReader(is); // 默认以UTF-8的方式转换成字符流,会乱码的,跟直接使用FileReader是一样的
        Reader isr = new java.io.InputStreamReader(is , "GBK");  //以指定的GBK编码转换成字符输入流  解决了乱码问题

        BufferedReader br = new BufferedReader(isr);
        String line;
        while ((line = br.readLine()) != null){
            System.out.println(line);
        }
    }
}
(三)字符输出转换流 (1)引入

①如果需要控制写出去的字符使用的编码,怎么办?

●可以把字符以指定编码获取字节后再使用字节输出流写出去:
“哈哈哈哈”.getBytes(编码)
●也可以使用字符输出转换流实现。

(2)字符输出转换流


●字符输入转换流:OutputStreamWriter,可以把字节输出流按照指定编码转换成字符输出流。

构造器说明
public OutputStreamWriter(OutputStream os)可以把原始的字节输出流按照代码默认编码转换成字符输出流,几乎不用。
public OutputStreamWriter(OutputStream os,String charset)可以把原始的字节输出流按照指定编码转换成字符输出流(重点)
(3)字符输出转换流OutputStreamWriter的作用

●public OutputStreamWriter(OutputStream os,String charset)
●可以指定编码把字节输出流转换成字符输出流,从而可以指定写出去的字符编码!

(4)具体使用



输出的变成了乱码,说明了字符输出转换流OutputStreamWriter,成功的由UTF—8,变为了GBK

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1024311.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号