温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java字节字符转换流的操作详解

发布时间:2021-09-14 23:37:18 来源:亿速云 阅读:134 作者:chen 栏目:编程语言

本篇内容主要讲解“java字节字符转换流的操作详解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java字节字符转换流的操作详解”吧!

一 基本概念

1、认识文本和文本文件

java的文本(char)是16位无符号,是字符的unicode编码(双字节编码)文件是byte byte byte 的数据序列文本文件是文本(char)序列按照某种编码方案(utf-8,utf-16be,gbk)序列化为byte的存储结果。

2、字符流(Reader Writer)---操作的都是文本文件

字符的处理:一次处理一个字符字符的底层任然是基本的字节序列

3、字符流的基本实现

InputStreamReader完成byte流解析未char流,按照编码解析OutputStreamWriter 提供完成char流到byte流,按照编码处理

4、UE编码查看方法

UltraEdit-32的状态栏可以显示文件的编码类型,详细情况如下:

5、Myeclipse编码查看方法

Project->Property->Resource

二 实例

package com.imooc.io;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;public class IsrAndOswDemo {    public static void main(String[] args)throws IOException {        FileInputStream in = new FileInputStream("e:\\javaio\\test2.txt");        InputStreamReader isr = new InputStreamReader(in,"utf-8");//默认项目的编码,操作的时候,要写文件本身的编码格式        FileOutputStream out = new FileOutputStream("e:\\javaio\\test1.txt");        OutputStreamWriter osw = new OutputStreamWriter(out,"utf-8");        /*int c ;        while((c = isr.read())!=-1){            System.out.print((char)c);        }*/        char[] buffer = new char[8*1024];        int c;        /*批量读取,放入buffer这个字符数组,从第0个位置开始放置,最多放buffer.length个         返回的是读到的字符的个数        */        while(( c = isr.read(buffer,0,buffer.length))!=-1){            String s = new String(buffer,0,c);            System.out.print(s);            osw.write(buffer,0,c);            osw.flush();        }        isr.close();        osw.close();    }}

三 运行结果

中国1jd

四 说明

用UE创建的utf-8和用myeclipse创建的utf-8,文件大小不一样,该程序是用myeclipse创建的utf-8进行测试的。

五 utf-8无bom和utf-8什么区别

utf-8+bom比utf-8多了三个字节前缀:0xEF0xBB0xBF,有这三个字节前缀的文本或字符串,程序可以自动判断它为utf-8格式,并按照utf-8格式来解析文本或字符串,否则,一个文本或者字符串在未知编码的情况下,需要按照字符编码规范去一个个验证

六 utf-8编码说明

https://baike.baidu.com/item/UTF-8/481798?fr=aladdin

七 编码实例

打开”记事本“程序Notepad.exe,新建一个文本文件,内容就是一个”严“字,依次采用ANSI,Unicode,Unicode big endian 和 UTF-8编码方式保存。

然后,用文本编辑软件UltraEdit中的”编辑-十六进制函数“,观察该文件的内部编码方式。

1)ANSI:文件的编码就是两个字节“D1 CF”,这正是“严”的GB2312编码,这也暗示GB2312是采用大头方式存储的。2)Unicode:编码是四个字节“FF FE 25 4E”,其中“FF FE”表明是小头方式存储,真正的编码是4E25。3)Unicode big endian:编码是四个字节“FE FF 4E 25”,其中“FE FF”表明是大头方式存储。4)UTF-8:编码是六个字节“EF BB BF E4 B8 A5”,前三个字节“EF BB BF”表示这是UTF-8编码,后三个“E4B8A5”就是“严”的具体编码,它的存储顺序与编码顺序是一致的。

到此,相信大家对“java字节字符转换流的操作详解”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI