问题是:fis.read()返回的整数是不是fin每读一个byte,然后在其它高位补上零,形成一个32位的整数,并赋给c,?
fos.write(c)是不是取整数c的低8位,形成一个byte,然后再写入文件?
-------------
应该是这样
InputStreamReader isr = new InputStreamReader(is,"8859-1")
----------
这句话的意思应该是,用iso8859-1这个字符集为字节流解码,那么OutputStreamWriter应该用iso8859-1来编码,传输的都是用iso8859-1编码的字节流。

解决方案 »

  1.   

    InputStreamReader isr = new InputStreamReader(is,"8859-1")
    (采用的是iso8859-1编码方式在不同平台之间正确转换字符)输入字符流中的字符与编码有什么关系?上述方法为什么可以正确转换字符呢?上述方法不一定能正确读出文件的内容,比如说文件的编码格式是“gb2312”
    用上述方法得到的肯定是乱码,不过这时候可以写
    InputStreamReader reader=new InputStreamReader(is,"GB2312");
      

  2.   

    为什么呢?你是怎么分析的呢?我很知道编码,字符集,流之间的关系,麻烦您帮助解释一下
    ------------------
    这不是简单能说清楚的,建议你去google一下,这方面的文章应该不少。