高手请指教:为什么不行!!!!! 为什么FileReader不行?给个理由?我只用FileInputStream已完成了分割文件的程序。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 首先,Java 1.2以上版本引入Reader,Writer 目的不是为了让你用它来读一个字节流的文件!:) 它的目的是为了让你可以使用它来读MBCS(Multi-Bytes Code System)的“文本”文件,因为新引入的Reader,Writer可以读入Unicode的Character! 也就是说,如果你使用了任何一种有效的编码(汉字,阿拉伯,等等)来写一个“文本”文件,用Reader和Writer都可以正确地使用,不会象InputStream, OutputStream处理“文本”时可能会在字符中间中断从而产生错误,因为它们Stream设计是来处理字节流的。同样,这也解释了为什么你用InputStream可以正确地处理任何面向字节的处理。接着解释为什么你的FE AA 或 FF 11会转换成 65533 65533 => 3f 3f,因为Java试图将你的DOC文件当作一个Unicode文本文件来处理,但是,FE AA与 FF 11在UTF-8标准中是不存在的字符(Character),而Unicode规定在这种情况下将它转成"?",也即 3F。在Java中,内部是使用Unicode标准的。UTF-8标准就是Java在任何缺省平台上使用的Unicode标准,你可以去http://www.unicode.org 参考详细的标准,我简单介绍UTF-8如下:在Unicode中编码为 0000 - 007F 的 UTF 中编码形式为: 0xxxxxxx 在Unicode中编码为 0080 - 07FF 的 UTF 中编码形式为: 110xxxxx 10xxxxxx在Unicode中编码为 0000 - 007F 的 UTF 中编码形式为: 1110xxxx 10xxxxxx 10xxxxxx简单地可见,不存在以FF或FE开头的任何UTF-8字符编码!也许有人想问,照这么说,GB2313或GBK之类的文本文件似乎也有编码不符合UTF-8标准,为什么可以转换呢?但请仔细看看JavaDOC中对FileReader的说明:"这是一个读字符文件的类!这个类的构造方法假定默认的字符编码和字节缓冲区容量是正确的,如果你需要改变这些值,要通过FileInputStream构造一个InputStreamReader!"在GB2312平台上,它默认的字符编码是GB2312,这是正确的,在此情况下,JAVA会作GB2312=》UTF-8的转换,结果也是正确的!但你的DOC文件的默认编码未指定时,是会采用UTF-8的。所以,要处理象DOC或XLS之类的二进制文件时,还是要使用Stream!而不是什么Reader,Writer! List里取一个属性所有值,放到另一个List里面 自学数据结构,第一章练习一就迷惑了。 请问我学习jsp需要学习j2se部分的gui和网络编程和applet吗? Create table的语句怎么写?? (flyingbug过来瞧瞧) 这样的文件如何解析 迷茫:没有实际的项目可做,该如何学习呢?我知道大虾们回答这种问题都腻了!但是小弟真的很迷茫,请大家一定进来看看 !! break语句 请问这段代码有什么错误呢? 请教一个有关weblogic的问题! 请问匿名内部类中抛出异常的问题 weblogic问题 请问能否将编译后的CLASS文件恢复为JAVA,怎么转?
在Unicode中编码为 0000 - 007F 的 UTF 中编码形式为: 0xxxxxxx
在Unicode中编码为 0080 - 07FF 的 UTF 中编码形式为: 110xxxxx 10xxxxxx
在Unicode中编码为 0000 - 007F 的 UTF 中编码形式为: 1110xxxx 10xxxxxx 10xxxxxx简单地可见,不存在以FF或FE开头的任何UTF-8字符编码!也许有人想问,照这么说,GB2313或GBK之类的文本文件似乎也有编码不符合UTF-8标准,为什么可以转换呢?但请仔细看看JavaDOC中对FileReader的说明:"这是一个读字符文件的类!这个类的构造方法假定默认的字符编码和字节缓冲区容量是正确的,如果你需要改变这些值,要通过FileInputStream构造一个InputStreamReader!"
在GB2312平台上,它默认的字符编码是GB2312,这是正确的,在此情况下,JAVA会作GB2312=》UTF-8的转换,结果也是正确的!但你的DOC文件的默认编码未指定时,是会采用UTF-8的。所以,要处理象DOC或XLS之类的二进制文件时,还是要使用Stream!而不是什么Reader,Writer!