用io读取html页面文件乱码问题

最近在用springboot去做一个自动发送邮件报表的功能,其中邮件报表内容我是用html页面的形式去做的。在功能开发过程中,我一直用的是springboot内置的tomcat去启动项目,在项目结尾的时候,因为后期要到测试环境,线上环境,为了有更好的迁移性,我就用本地的tomcat去启动项目先调试一下。不起不知道,一起一懵逼,在我调用完发送邮件的方法后,原本在使用springboot内置tomcat启动项目一切发送正常的情况下,用外置的tomcat启动项目调用接口实际接收到的邮件中的中文竟然乱码了,这就有点尴尬了。

对于这个问题我先寻摸了一下广大网友有啥高见。我发现博客上说什么的都有,但是真正解决了问题的不是很多。

我认为对于这个问题我们应该先找到在哪个过程中出现的乱码,一般出现这种乱码的我们可以从以下几个方面考虑。

(1)原文件的类型是什么编码的utf8还是gbk...

(2)我们采用的文件读取方式是以什么形式去读取的。

(3)网页在解析的时候是用的什么编码去做的解析。

针对以上几种情况,我们可以去这样排查问题。

(1)对于文件我们可以用工具去验证以下,用notepad++编辑器通过不同的编码去打开文件可以去判断,一般是utf-8或者gbk,如果你非得弄了个DOS啥的编码类型,那随你高兴就好,一般没那么大偏差的。我们可以用不同的编码格式去打开这个文件,如果于文件不同的编码会乱码,相反则正常不会乱码。

(2)讲到第二种的查错也正好是我出现问题的地方,我的文件我已经确定了是utf8编码的,代码我先用的是FileReader去读取的文件,我将读到的字符串打印出来出现了乱码,我把乱码的字符串跟用编辑器以GBK编码打开的文件对比,发现乱码字符是一样的。可能这个类用外置tomcat去启动项目去读文件默认是用GBK读的吧,当时我用springboot内置的tomcat去启动项目以同样的方式读取文件而没有出现乱码的情况,感兴趣的可以自己在查一下。针对这个问题我给它在读取的时候指定了一下字符集,问题解决了,在这儿还有人说修改tomcat中文件的,对于这种情况小编没试,担心自己一不下心把tomcat弄残了,如果对tomcat熟悉的不妨试一试,个人不建议去修改tomcat中的代码,穷途末路可能也是一种方法。

//修改过的代码
fileInputStream = new FileInputStream("D:\\workspace\\company\\eco-data-search\\data-search-web\\src\\main\\resources\\mail\\umpData.html");
            fileReader = new InputStreamReader(fileInputStream, "UTF-8");
//原码
//            fileReader = new FileReader("D:\\workspace\\company\\eco-data-search\\data-search-web\\src\\main\\resources\\mail\\umpData.html");

(3)针对第三种,我们在浏览器中将html文件打开去检验一下就可以了,非utf8格式会乱码,大家在代码中加入以下这一行设置以下浏览器解析的编码集就可以:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

如果是jsp文件也可以用以代码来指定字符集:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小猿备忘录

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值