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);

执行结果:
    <a href="selectdir.jsp">閲嶆柊閫夋嫨鏂囦欢鐨勭洰褰�</a> 

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

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

 执行结果:

          <a href="selectdir.jsp">??????????????</a>

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);

执行结果:

           <a href="selectdir.jsp">重新选择文件的目录</a>

到此,问题终于解决

          

猜你喜欢

转载自shiqiaopinglove.iteye.com/blog/2219089