中文编码前后端格式问题

java 中文乱码为 ?????? 格式,使用 URLEncoder.encode 编码,英文编码不受影响

response.setContentType("application/vnd.ms-excel;charset=UTF-8"); //通知客服文件的MIME类型
//设置要下载的文件的名称: 若是中文需要转码, java乱码为 ?????
response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(sheetName, "utf-8"));
// 服务端要在header设置Access-Control-Expose-Headers, 前端才能正常获取到
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");

web 中文乱码为 百分号 格式, 使用 decodeURIComponent 解码,英文编码不受影响

// 处理文件名称: <详见 https://www.jianshu.com/p/9352c68a0635>
let fileName;
try {
  const disposition = response.headers["content-disposition"];
  fileName = decodeURIComponent(disposition.split("fileName=")[1]); // 中文需要转码(前端乱码为百分号形式)
} catch (error) {
  fileName = EXPORT_FILE_NAME;
}
if (!fileName.includes(".xls")) fileName += ".xls";
return { data: formatResponse(), fileName }; // 格式化输出

你可能感兴趣的:(中文编码前后端格式问题)