java11 http正式_Java11 HttpClient下载中文文件名称乱码
不知道这个是不是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下载中文文件名称乱码相关推荐
- win10 oracle11g 乱码,win10系统下载中文文件出现乱码的解决方法
将windows7系统升级到windows10正式版后,发现即使自己将系统显示语言改为中文,在用浏览器下载某些中文文件时候,下载的文件名及文件内容仍会出现乱码的情况.这是怎么回事呢?其实,该问题是用户 ...
- 关于发送邮件附件中文文件名称乱码的问题
问题描述:发送压缩文件到qq邮箱,发现标题为中文名称,能正常显示,但是附件的中文名称为乱码. 任务:解决附件中文名称的乱码问题. 前期资料总结: 1.SMTP乱码解决方案(源自https://blog ...
- LINUX环境下资源下载中文目录及中文文件名称问题
为什么80%的码农都做不了架构师?>>> http://www.yeeach.com/2009/04/09/linux%E7%8E%AF%E5%A2%83%E4%B8%8B%E ...
- linux下文件下载中文,LINUX环境下资源下载中文目录及中文文件名称问题
项目采用UTF-8作为统一的编码(JVM中缺省字符集.Tomcat的URIEncoding字符集.Struts2的Locale字符集配置.过滤器字符集.页面统一编码.数据库编码.mysql数据库连接字 ...
- 解决Http或Https中下载中文文件乱码和无法下载问题
一.解决无法下载中文文件问题 在下载时,经常通过url方式链接到指定文件路径的方式进行下载文件,但是如果文件含有中文时,往往出现http 404 无法找到文件的错误,原因就是文件中包含中文的问题,因此 ...
- linux文件乱码crt,Linux中文文件显示乱码或Secure CRT显示乱码解决方案
Linux中文文件显示乱码或Secure CRT显示乱码解决方案 1.设置Secure CRT options->session options->appearance->fond( ...
- git status或者 git commit 中文文件显示乱码
1.美图 # 2.背景 对于上传的中文文件显示乱码,core.quotepath没有设置好 执行 git commit之后如下# Please enter the commit message for ...
- .net环境下ckeditor与ckfinder中文文件链接乱码的问题
.net环境下ckeditor与ckfinder中文文件链接乱码的问题 将ckfinder.js中的 getUrl:function(){return this.folder.getUrl()+enc ...
- 解决Safari浏览器下载文件文件名称乱码的问题
解决Safari浏览器下载文件文件名称乱码的问题 参考文章: (1)解决Safari浏览器下载文件文件名称乱码的问题 (2)https://www.cnblogs.com/itsharehome/p/ ...
- python listdir() 中文路径 中文文件夹 乱码 解决方法
python listdir() 中文路径 中文文件夹 乱码 解决方法 参考文章: (1)python listdir() 中文路径 中文文件夹 乱码 解决方法 (2)https://www.cnbl ...
最新文章
- android view自定义
- 降低数据中心功耗的 4 大方法
- Java一行代码打印当前系统时间
- 【spring boot】url中传递session id
- java服务端项目开发规范
- ArcGIS实验教程——实验三十五:ArcGIS Model Builder与空间建模原理、案例详解
- ssl1377-竞赛真理【dp之分组背包】
- Microsoft.NET多国语言资源解决方案
- easyui 提示框组件_15、Message 消息窗口组件
- 换工位解决ssh 卡住的背后
- 免费python编程自学网站-免费学习Python编程的3个优秀的网站资源
- Parcelbale接口
- html如何调整打印区域,怎么调整excel打印区域_教你调整excel打印区域的方法-系统城...
- 局部特征——角点检测(Harris,Shi-Tomasi)
- 【LeetCode】322. 零钱兑换 结题报告 (C++)
- 弘辽科技:618年中大决战,拖词拖价法快速玩转淘宝直通车
- php读取文件使用redis的pipeline导入大批量数据
- jquery--遍历
- Confidence Propagation Cluster: 一个来自CVPR2022的目标检测涨点神器(CP-Cluster)
- Java中类型zhaun‘huan
热门文章
- 进度计划表软件测试,如何控制项目进度?项目进度管理中项目计划进度表的制定...
- 常用的远程连接Linux工具有哪些??
- 互换性与技术测量教材pdf_《互换性与技术测量》赵燕【pdf】
- MATLAB下载安装
- 微信小程序云函数 -- 腾讯云通用印刷体识别应用
- 乌龟git配置ssh密钥
- 知乎每日精选python阅读脚本
- 【毕设狗】【单片机毕业设计】基于单片机的智能衣柜设计–实物设计
- PHP100视频教程(2012-2013版)下载地址及密码
- 带音效的计算机软件,普通电脑WIN7上安装杜比音效增强软件Dolby Home TheaterV4教程...