一、中文转码问题

今天在做文件下载时遇到了中文乱码的问题,因为之前文件下载没有设置文件名,是由浏览器自己设置的文件名,但是浏览器自己设置的名字没有中文,所以不存在这个中文乱码的问题,但是如果我们设置了中文名,该怎么处理呢?
解决办法
就是将中文转为16进制的字符串就好,下面的方法可以将中文转为16进制,字母或者数字不会变

/**
* s: 要转义的字符串
* enc: 字符编码,UTF-8, ISTO-8859-1,....
/URLEncoder.encode(String s, String enc)

测试:

System.out.println("中文 -> " + URLEncoder.encode("中文", "UTF-8"));
System.out.println("test-name -> " + URLEncoder.encode("test-name", "UTF-8"));
System.out.println("123 -> " + URLEncoder.encode("123", "UTF-8"));
System.out.println("中文-test-name-123 -> " + URLEncoder.encode("中文-test-name-123", "UTF-8"));

结果:

中文 -> %E4%B8%AD%E6%96%87
test-name -> test-name
123 -> 123
中文-test-name-123 -> %E4%B8%AD%E6%96%87-test-name-123

其实就是将字符串中中文部分转为了16进制,这样浏览器会自己解码

二、文件下载

    @PostMapping("/download")public void downLoadFile(HttpServletResponse resp) throws UnsupportedEncodingException {String fileName = URLEncoder.encode("学生名册.pdf", "UTF-8");//设置响应头中文件的下载方式为附件方式,以及设置文件名resp.setHeader("Content-Disposition","attachment; filename=" + fileName);//设置响应头中文件的为在页面直接显示,以及设置文件名//resp.setHeader("Content-Disposition","inline; filename=" + fileName);//设置响应头的编码格式为UTF-8resp.setCharacterEncoding("UTF-8");//设置响应头中文件类型为pdf格式resp.setContentType("application/pdf");//往响应流中写入数据//将本地文件变成输入流 FileInputStream input = new FileInputStream("C:/Desktop/名册.pdf");//向响应输出流中写入数据FileCopyUtils.copy(input, resp.getOutputStream());System.out.println("输出成功!")}

文件下载响应头的设置
content-type :指示响应内容的格式
content-disposition : 指示如何处理响应内容。

content-disposition 一般有两种方式:

inline :直接在页面显示
attchment :以附件形式下载

content-type的类型对照表

下载文件时,文件名的设置相关推荐

  1. Java下载文件时文件名出现乱码(但文件内容正常)

    今天写文件下载时,发现以前忽略的问题,写个小记录 我们一般使用中文操作系统,所以要求的 文件名编码最好是utf-8,国际化一点 但是,似乎实际上不是这样 1. String fileName=new ...

  2. 火狐浏览器下载文件时文件名乱码问题的解决

    火狐浏览器在微信网页版或其他网站中下载文件时,存在文件名乱码的问题,搜索了很多解决办法,写的都比较复杂,不适合我这种不懂代码的人.后来发现火狐浏览器附加组件addons上可以搜到解决此问题的组件,就是 ...

  3. java下载文件时文件名中文乱码

    下载文件时中文乱码是一个很常见的问题, 这不是第一次,但我希望它是最后一次了 这是个让人很头疼的问题, 明明在后台文件名还是正常的,为什么下载后文件名就乱码了呢 为什么会乱码:因为浏览器的编码和后台传 ...

  4. Java下载文件时文件名中的中文变成下划线,其他正常

    问题: 问题源码 package com.lm.cms2.controller;import org.springframework.stereotype.Controller; import org ...

  5. Linux火狐浏览器下载文件时文件名乱码

    火狐下载时文件名会乱码,其他浏览器如360.奇安信.扣扣都是正常的! 本文转自https://blog.csdn.net/tengqingyong/article/details/79943971?u ...

  6. 通过jsp下载文件时文件名及文件内容错误问题

    1.文件名乱码问题: 如果是本地window,文件名是 String fileName = new String(fileName.getBytes("utf-8")," ...

  7. ie浏览器打开aspx文件乱码_ie浏览器下载文件时文件名乱码

    做一个文件下载功能时,用ie浏览器下载时文件名乱码,火狐和谷歌正常,修改后ie显示正常,修改方法如下: @RequestMapping(value = "fileDownload" ...

  8. Win10 Edge 下载文件时文件名乱码 解决方案

    如果是win10家庭版要先开启组策略: 新建一个txt文件输入 @echo offpushd "%~dp0"dir /b %systemroot%\Windows\servicin ...

  9. 下载文件时设置文件名的方法

    在阿里云云存储OSS中下载文件时设置文件名的办法: import java.io.File; import java.io.FileInputStream; import java.io.IOExce ...

  10. 下载文件时,文件名乱码。

    Unicode网页中上传下载文件时发生文件名乱码的问题 最 近有一个需要支持unicode的项目在上传和下载文件时遇到文件名乱码问题. 项目背景, 这个项目关键之处在于需要支持unicode以及支持M ...

最新文章

  1. 微软“叛变”谷歌 Chromium!
  2. IOS 开发中判断NSString是否为空字符
  3. 数据持久层框架 Hibernate
  4. linux 的 usr 文件
  5. CDS view delivered in CRM EHP4
  6. html 倒计时 插件,JavaScript使用小插件实现倒计时的方法讲解
  7. WINDOWS 2008 AD权限管理服务(ADRMS)完全攻略
  8. XML文件的读取(XmlParserDemo)
  9. 移植性问题のerror C2664: strcpy : 不能将参数 2 从 CString 转换为 const char *怎么回事?...
  10. 简单理解计算机内存乱序
  11. Java常见算法之二分法查找算法详解
  12. java后台开发工作职责_JAVA后台开发岗位职责
  13. Visual C++ 冒险游戏程序设计
  14. 《高性能MySQL》读书笔记(1~6章)
  15. 什么是闰年?闰年为什么是366天?为什么不能是100的倍数?
  16. WhatsApp电脑版和WhatsApp网页版区别?
  17. TypeError: Converting circular structure to JSON
  18. 使用VS2022编译Telegram桌面端(tdesktop)
  19. 杜兰特全部比赛录像合集【百度网盘高清分享】
  20. 遇到100万行的 Excel,还没打开,电脑和我都崩溃了,该怎么办?

热门文章

  1. 算法提高 第五题 java 题解 1096
  2. 30位90后霸榜! 福布斯: 比你年轻、比你有颜、比你有才华, 就是他们了!
  3. 树立个人品牌:让名企hr们主动来找你
  4. ad19怎么手动布线_Altium Designer手动布线的最佳设置
  5. php请求https接口
  6. 日语基础学习 Day 09
  7. linux上的远程桌面工具
  8. 数字图像处理第九章笔记
  9. 蔚来汽车前端春招一面面经(2021.4.21)
  10. 基础题库:10 带余除法