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

1 篇文章 0 订阅
本文介绍了在Java中使用FileReader和InputStreamReader处理文件时可能出现的中文乱码问题。通过对比两种方法,指出FileReader默认使用GBK编码可能导致解码错误,而InputStreamReader允许指定字符集。文中提供了两种解决方案,包括字符转码和直接使用带字符集参数的InputStreamReader,成功解决了utf-8编码的jsp页面显示中文乱码的难题。
摘要由CSDN通过智能技术生成

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

到此,问题终于解决

 

 

 

          

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值