不知道这个是不是BUG,记录一下。

下载文件如果文件名称含有中文时,设置文件名称一般有以下两种方式:

// 使用URL编码解决

//responseHeaders.add("Content-Disposition", "attachment; filename=" + UrlUtils.encode("蜗牛.txt"));

// 设置ISO-8859-1编码解决

responseHeaders.add("Content-Disposition", "attachment; filename=" + new String("蜗牛.txt".getBytes(), SystemConfig.CHARSET_ISO_8859_1));

URL编码这个在浏览器和HttpClient都是没有问题的。

但是使用ISO-8859-1编码时浏览器可以,但是HttpClient却提示乱码。

最后发现不知道为什么HttpClient这里可能存在byte转为char没有去符号& 0xFF,所以这里就会出现这个问题。

解决办法:

final char[] chars = fileName.toCharArray();

for (int i = 0; i < chars.length; i++) {

// 转为ISO-8859-1单字节

chars[i] = (char) (chars[i] & 0x00FF);

}

fileName = new String(chars);

验证代码:

@Test

public void testChar() throws Exception {

// 错误代码:│ワラ￧ノロ.txt

var name = "蜗牛.txt";

read(new String(new String(name.getBytes(), "ISO-8859-1").getBytes()));

}

private void read(String name) throws Exception {

this.log(name);

var bytes = name.getBytes("ISO-8859-1");

var chars = name.toCharArray();

var chare = new char[bytes.length];

for (int i = 0; i < chars.length; i++) {

//this.log(bytes[i] + "=" + ((char) (bytes[i])) + "=" + ((char) (0xFF & bytes[i])));

// 如果不做0xFF操作异常

//chare[i] = (char) (bytes[i] & 0xFF); // 正常

chare[i] = (char) (bytes[i]); // 异常

}

this.log(new String(chare));

this.log(bytes.length);

this.log(bytes);

this.log(chars.length);

this.log(chars);

this.log(chars[0] & 0xFF);

}

java11 http正式_Java11 HttpClient下载中文文件名称乱码相关推荐

  1. win10 oracle11g 乱码,win10系统下载中文文件出现乱码的解决方法

    将windows7系统升级到windows10正式版后,发现即使自己将系统显示语言改为中文,在用浏览器下载某些中文文件时候,下载的文件名及文件内容仍会出现乱码的情况.这是怎么回事呢?其实,该问题是用户 ...

  2. 关于发送邮件附件中文文件名称乱码的问题

    问题描述:发送压缩文件到qq邮箱,发现标题为中文名称,能正常显示,但是附件的中文名称为乱码. 任务:解决附件中文名称的乱码问题. 前期资料总结: 1.SMTP乱码解决方案(源自https://blog ...

  3. LINUX环境下资源下载中文目录及中文文件名称问题

    为什么80%的码农都做不了架构师?>>>    http://www.yeeach.com/2009/04/09/linux%E7%8E%AF%E5%A2%83%E4%B8%8B%E ...

  4. linux下文件下载中文,LINUX环境下资源下载中文目录及中文文件名称问题

    项目采用UTF-8作为统一的编码(JVM中缺省字符集.Tomcat的URIEncoding字符集.Struts2的Locale字符集配置.过滤器字符集.页面统一编码.数据库编码.mysql数据库连接字 ...

  5. 解决Http或Https中下载中文文件乱码和无法下载问题

    一.解决无法下载中文文件问题 在下载时,经常通过url方式链接到指定文件路径的方式进行下载文件,但是如果文件含有中文时,往往出现http 404 无法找到文件的错误,原因就是文件中包含中文的问题,因此 ...

  6. linux文件乱码crt,Linux中文文件显示乱码或Secure CRT显示乱码解决方案

    Linux中文文件显示乱码或Secure CRT显示乱码解决方案 1.设置Secure CRT options->session options->appearance->fond( ...

  7. git status或者 git commit 中文文件显示乱码

    1.美图 # 2.背景 对于上传的中文文件显示乱码,core.quotepath没有设置好 执行 git commit之后如下# Please enter the commit message for ...

  8. .net环境下ckeditor与ckfinder中文文件链接乱码的问题

    .net环境下ckeditor与ckfinder中文文件链接乱码的问题 将ckfinder.js中的 getUrl:function(){return this.folder.getUrl()+enc ...

  9. 解决Safari浏览器下载文件文件名称乱码的问题

    解决Safari浏览器下载文件文件名称乱码的问题 参考文章: (1)解决Safari浏览器下载文件文件名称乱码的问题 (2)https://www.cnblogs.com/itsharehome/p/ ...

  10. python listdir() 中文路径 中文文件夹 乱码 解决方法

    python listdir() 中文路径 中文文件夹 乱码 解决方法 参考文章: (1)python listdir() 中文路径 中文文件夹 乱码 解决方法 (2)https://www.cnbl ...

最新文章

  1. android view自定义
  2. 降低数据中心功耗的 4 大方法
  3. Java一行代码打印当前系统时间
  4. 【spring boot】url中传递session id
  5. java服务端项目开发规范
  6. ArcGIS实验教程——实验三十五:ArcGIS Model Builder与空间建模原理、案例详解
  7. ssl1377-竞赛真理【dp之分组背包】
  8. Microsoft.NET多国语言资源解决方案
  9. easyui 提示框组件_15、Message 消息窗口组件
  10. 换工位解决ssh 卡住的背后
  11. 免费python编程自学网站-免费学习Python编程的3个优秀的网站资源
  12. Parcelbale接口
  13. html如何调整打印区域,怎么调整excel打印区域_教你调整excel打印区域的方法-系统城...
  14. 局部特征——角点检测(Harris,Shi-Tomasi)
  15. 【LeetCode】322. 零钱兑换 结题报告 (C++)
  16. 弘辽科技:618年中大决战,拖词拖价法快速玩转淘宝直通车
  17. php读取文件使用redis的pipeline导入大批量数据
  18. jquery--遍历
  19. Confidence Propagation Cluster: 一个来自CVPR2022的目标检测涨点神器(CP-Cluster)
  20. Java中类型zhaun‘huan

热门文章

  1. 进度计划表软件测试,如何控制项目进度?项目进度管理中项目计划进度表的制定...
  2. 常用的远程连接Linux工具有哪些??
  3. 互换性与技术测量教材pdf_《互换性与技术测量》赵燕【pdf】
  4. MATLAB下载安装
  5. 微信小程序云函数 -- 腾讯云通用印刷体识别应用
  6. 乌龟git配置ssh密钥
  7. 知乎每日精选python阅读脚本
  8. 【毕设狗】【单片机毕业设计】基于单片机的智能衣柜设计–实物设计
  9. PHP100视频教程(2012-2013版)下载地址及密码
  10. 带音效的计算机软件,普通电脑WIN7上安装杜比音效增强软件Dolby Home TheaterV4教程...