springboot+vue 下载文件中文乱码
springboot
HttpHeaders responseHeaders = new HttpHeaders();String encodedFileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");responseHeaders.set("Content-Disposition","attachment; filename=\"" + encodedFileName + "\"; filename*=UTF-8''" + encodedFileName);return new ResponseEntity<>(EntityUtils.toByteArray(entity), responseHeaders, HttpStatus.SC_OK);
vue
downloadFile(row) {downloadOX({fileId: row.id}).then(response => {const contentDisposition = response.headers['content-disposition'];let filename = "default_filename.ext"; if (contentDisposition) {const matches = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/.exec(contentDisposition);if (matches!= null && matches[1]) {filename = decodeURIComponent(matches[1].replace(/['"]/g, ''));}}const url = window.URL.createObjectURL(new Blob([response.data]));const link = document.createElement('a');link.href = url;link.setAttribute("download", filename);document.body.appendChild(link);link.click();link.remove();window.URL.revokeObjectURL(url);this.$message.success("文件下载成功");}).catch(error => {this.$message.error("文件下载失败:" + (error || '未知错误'));});},