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

  

本文实例讲述了java字节字符转换流操作。分享给大家供大家参考,具体如下:

  

  

<强> 1,认识文本和文本文件

  

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

  

<强> 2,字符流(读者作家)——操作的都是文本文件

  

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

  

<强> 3,字符流的基本实现

  

InputStreamReader完成字节流解析未字符流,按照编码解析
  OutputStreamWriter提供完成字符流到字节流,按照编码处理

  

<强> 4,问题编码查看方法

  

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

  

癹ava字节字符转换流操作详解"

  

<强> 5,Myeclipse编码查看方法

  

项目→属性→资源

  

        包com.imooc.io;   进口java.io.FileInputStream;   进口java.io.FileOutputStream;   进口java.io.IOException;   进口java.io.InputStreamReader;   进口java.io.OutputStreamWriter;   公开课IsrAndOswDemo {   公共静态void main (String [] args)抛出IOException {   FileInputStream=new FileInputStream (“e: \ \ javaio \ \ test2.txt”);   InputStreamReader isr=new InputStreamReader (, " utf - 8 ");//默认项目的编码,操作的时候,要写文件本身的编码格式   FileOutputStream=new FileOutputStream (“e: \ \ javaio \ \ test1.txt”);   OutputStreamWriter osw=new OutputStreamWriter (,“utf - 8”);/* int c;   在((c=isr.read ()) !=1) {   System.out.print((字符)c);   } */char[]缓冲=new char (8 * 1024);   int c;/*批量读取、放入缓冲这个字符数组,从第0个位置开始放置,最多放buffer.length个   返回的是读到的字符的个数   */在((c=isr.read(缓冲区,0,buffer.length)) !=1) {   字符串s=新的字符串(缓冲0 c);   System.out.print(年代);   osw.write(缓冲0 c);   osw.flush ();   }   isr.close ();   osw.close ();   }   }      之前      

  
  

中国1 jd

     

  

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

  

  

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

  

  

  

  

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

  

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

  

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

  

更多关于java相关内容感兴趣的读者可查看本站专题:《java字符与字符串操作技巧总结》,《java数组操作技巧总结》,《java数学运算技巧总结》,《java数据结构与算法教程》及《java操作DOM节点技巧总结》

  

希望本文所述对大家java程序设计有所帮助。

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