文件下载文件名包含中文时,乱码的处理方法(url编解码)
2023-09-11 14:21:53 时间
utf-8/gbk编码
"中“这个汉子的utf-8编码为:E4B8AD
gbk编码为:D6D0
urlencode
经过urlencode编码后,
%E4%B8%AD
%D6%D0
服务端这样编写代码时的网络报文解析
String name = "中文bc_rule"
+ "_export_"
+ DateUtils.formatDateToStr(new Date(), "yyyy_MM_dd HH_mm_ss") + ".xls";
String encode = URLEncoder.encode(name, "UTF-8");
httpServletResponse.setHeader("filename", encode);
网络抓包可以看到,就是把中字的urlencode编码传下去了:
"%E4%B8%AD",看来默认就是UTF-8编码。
客户端是js,如下方式进行解码:
const filename = res.headers.get("filename");
console.log(`origin name:${ filename}`)
const filename2 = decodeURIComponent(filename);
console.log(`filename:${filename2}`);
console打印的结果:
origin name:%E4%B8%AD%E6%96%87bc_rule_export_2022_01_06+10_22_55.xls
filename:中文bc_rule_export_2022_01_06+10_22_55.xls
可以看到,客户端也是默认用了UTF-8去解码,否则应该是解码不出来的。
客户端代码没变的情况下,遇到下图中用gbk编码的字符串,报错了:
下图直接在console实验,确实会报错:
decodeURIComponent("%D6%D0")
VM671:1 Uncaught URIError: URI malformed
at decodeURIComponent (<anonymous>)
at <anonymous>:1:1
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURI
相关文章
- python正则进阶知识点:去掉中文字符间的空格,保留单词之间的空格
- CentOS 7.0 安装中文输入法
- 将字典直接写入文件,出现中文乱码问题
- Linux sort命令中文手册(info sort翻译)
- Image (SwiftUI 中文文档手册 教程含源码)
- @FetchRequest CloudKit CoreData(SwiftUI中文文档手册)
- CloudKit快速入门之05 多媒体和大文件存储Asset and Location Fields (SwiftUI iCloud CloudKit中文文档手册教程)
- QLPreviewController 文件预览组件SwiftUI UIKit中文文档手册)
- 【hacker的错误集】解决response.text获取中文乱码问题
- windows 解压文件出现乱码 7zip解压文件中文乱码 解决方法
- 自制基于HMM的python中文分词器
- Java中中文拼音的排序问题
- TensorFlow使用CNN实现中文文本分类
- 使用FCKeditor编辑器上传文件时中文文件名乱码
- 如何解决JAVA程序中文无法显示的问题?
- 文字识别原码 百度api试验,识别率很高的,中文英文均可
- Web 基础 之 Eclipse 中如何把新建的 jsp 文件默认的编码格式(ISO-8859-1)修改为 UTF-8,避免中文乱码
- 解决java中ZipFile解压缩时候的中文路径和乱码问题
- java解压多目录Zip文件(解决中文乱码问题)--转载