记一个 中文乱码问题

中文乱码问题, 一直陪伴着我,时不时这里出现,那里出现!

这回的问题 跟记事本有关, Windows记事本, 你懂的, 酸爽的一比。

 

源文件的 是记事本创建的,当然,也是记事本保存的(公司有些同事 竟然喜欢记事本, 我无语凝噎) 我平时都是使用 notepadd++。 编码格式不同,导致的问题。网上也有很多人吐槽这个记事本。

如下:

 

 

用notepadd++ 打开记事本创建的txt文件, 都是正常的, 也没有乱码,但是文件上传之后,默认以 UTF-8存储, 然后再次预览、下载下来查看 就出现问题了:

 

 

这样的文件 蛋疼。

 

怎么办呢? 其实很简单,需要进行编码探测,EncodingDetect 搞一下就好了! 仔细测试一下,发现还有问题, 发现, 编码问题似乎是好了,但是 内容长度有所减少,而且 后面出现了一个 奇怪的 乱码符合:

后面发现,注意到, 重新编码之后, 其长度也发生了变化,

            String name = downloadFilename(request, filename);
            response.addHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=\"" + name + "\"");
            if (contentLength != null) {
                response.addHeader(HttpHeaders.CONTENT_LENGTH, "" + contentLength);
            }
            if (StringUtils.isNotBlank(contentType)) {
                response.setContentType(contentType);
            }
            out = new BufferedOutputStream(response.getOutputStream());
            out.write(buffer);
            out.flush();

 

上面的 contentLength 是bytes 的长度, 应该是重新编码后的  bytes 的长度 !!

 

终于好了!

 

不过, 另外 需要注意的是, 这个时候, 如果用浏览器的 控制台查看,发现是乱码,

 

 

 

 

 

 

 

 

 

估计跟 响应头有关:

 

可以考虑设置 ContentType 或者  ;charset=

这个其实是不要紧的, 暂时 忽略即可。。

 

posted on 2019-09-06 12:12  CanntBelieve 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/FlyAway2013/p/11474039.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值