乱码问题

在下载或者页面展示的时候经常会遇到乱码的问题,先总结如下:

首先,设定response的编码方式:

response.setContentType("application/octet-stream;charset=UTF-8");

 

这个设定的是页面响应的编码方式;

而在html(velocity等)文档中对编码的设置,是告诉页面,以什么样的方式展示所写内容:

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

 有以上两步了,大家就认为万事大吉了,可以放心的对流或字符进行读写了,其实不然,注意,虽然设定了响应与显示的格式,但是别忘了还有,所写的格式呢,要保证所写的格式与此一致才行。

这就好比,发件人与收收人把发送与接受的方式统一了,但是发送人发送的消息的内容所展现的方式与约定的方式不一致,所以就造成了接收方看到的是一片乱码。

一般,比较常用FileWriter,来写文件,但是他有一个弊端(可查看jdk的API),他采用的是本地的local默认编码方式书写,不可强制定义写的编码方式,即可能会与我们所定义的编码方式一致,这就为乱码留下了隐患:如

FileWriter out = new FileWriter(String fileName);

 

建议采用它的父类:java.io.OutputStreamWriter 来实现对数据的书写,它可以强制定义书写的编码方式:

OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(String fileName),"UTF-8");

 这就保证了所写编码与两方约定的编码方式的一致性,从而避免了乱码的出现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值