黑马程序员技术交流社区

标题: 大家好 请问中文乱码怎么处理? [打印本页]

作者: wangyuyus    时间: 2013-11-12 13:59
标题: 大家好 请问中文乱码怎么处理?
import java.io.*;

public class Text8 {

        /**
         * 定义一个文件输入流,调用read(byte[] b)方法将exercise.txt文件中的所有内容打印出来(byte数组的大小限制为5)。
         *
         * @param args
         * @throws Exception
         */
        public static void main(String[] args) throws Exception {
                // TODO Auto-generated method stub
                read();
        }

        public static void read() throws Exception {

                FileInputStream fis = new FileInputStream(new File("exercise.txt"));
                int i = 5;
                byte[] by = new byte[i];
                while (fis.read(by, 0, i) != -1) {
                        System.out.print(new String(by));
                }
                fis.close();

        }

}
打印出的中文都是乱码,请问大家这样有什么方法处理么
作者: 零下五度的水    时间: 2013-11-12 14:11
IO流有讲啊,有一个可以转换编码的,好像是 InputStreamReader 吧,指定编码形式就是了
你看看你那个 txt 是用什么编码存储的,照着读就是了
作者: hel    时间: 2013-11-12 15:17
FileInputStream 是读取字节流的,你可以将FileInputStream 改为FileRearder,
或者:
FileInputStream fis = new FileInputStream(new File("exercise.txt"));

InputStreamReader in = new InputStreamReader(fis);
打印in
作者: wjj410830911    时间: 2013-11-12 15:43
你用的是IO字节流FileInputStream
可以用字符流来解决问题FileReader, FileWriter
但字符流在拷贝文本文件, 不推荐使用. 因为读取时会把字节转为字符, 写出时还要把字符转回字节.
只有像程序需要读取一段文本, 或者需要写出一段文本的时候可以使用字符流,比如现在这个情况

当然如果你执意要用字节流的话,可以把
int i = 5;
byte[] by = new byte[i];
数组长度改成4或者2;不要用奇数这么奇葩的长度




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2