jsp页面显示文件内容有中文乱码问题

阅读更多

一、首先需要了解FileReader与InputStreamReader的区别:

1、FileReader:读取文件过程中,继承了InputStreamReader,但是并没有实现父类中带字符集参数的构造函数,所以只能按照系统默认的字符集(GBK)来解码。

      比如页面的编码方式为utf-8,解码过程为utf-8->GBK->utf-8,该过程会出现损失,造成不能还原最初的字符。

2、InputStreamReader:有实现父类中带字符集参数的构造函数

 

二、具体实现演示

1、FileReader实现

代码:

           FileReader in = new FileReader(file);
           BufferedReader br= new BufferedReader(in);

          StringBuffer stringbuffer = new StringBuffer();
          String s = null;

          while ((s = br.readLine()) != null) {
                      stringbuffer.append("\n" + s);
           }
           String temp = new String(stringbuffer);

执行结果:
    閲嶆柊閫夋嫨鏂囦欢鐨勭洰褰� 

2、想到的第一种方案:(字符转码,结果解决失败)

        在代码1中加转码:temp = new String(temp.getBytes("ISO-8859-1"),"utf-8");

 执行结果:

          ??????????????

3、第二种方案:(将FileReader换成InputStreamReader)

 代码:

           BufferedReader br= new BufferedReader(new InputStreamReader(new FileInputStream(file),"utf-8"));

           StringBuffer stringbuffer = new StringBuffer();
           String s = null;

           while ((s = br.readLine()) != null) {
                      stringbuffer.append("\n" + s);
           }
           String temp = new String(stringbuffer);

执行结果:

           重新选择文件的目录

到此,问题终于解决

 

 

 

          

 

你可能感兴趣的:(jsp,中文乱码,文件,读取)