InputStream 读取文件的时候,是以字节的形式读取的,那么假如一个文件里边是汉字的话,读取出来然后打印才DOS窗口的话,就会出现乱码!但是,现在有一个问题,如果是InputStream 从一个文件里边读取数据,而这个文件里边是汉字,然后用OutputStream接收的话,就是说 OutputStream os = new OutputStream(new File("a.txt")); InputStream is = new InputStream(new File("b.txt")); os.read(is); 用一个循环将is里边的汉字读到os里边的时候,那么b.txt里边的全部汉字就可以完全读到a.txt里边,而不出现乱码,这是什么原因呢?愿听详解!
你可以显式地把读出来的字节,按照DOS窗口的编码转成字符,再打印就可以了。
比如:String(byte[] bytes, Charset charset)而你直接将a.txt按字节写到b.txt时,文件头部会有标识这个文件编码的信息,
你用编辑器打开b.txt时,编辑器就会使用正确的编码读取b.txt的内容。还有一种方法:改变DOS窗口的显示编码,也可以正确地显示a.txt中的汉字