欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-01 16:55:09
...

一、首先需要了解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>

到此,问题终于解决