From 5bbc4ae3042f2a22e3c3a5d459a7d6444f43c91e Mon Sep 17 00:00:00 2001 From: gitonthescene <45531702+gitonthescene@users.noreply.github.com> Date: Wed, 17 Mar 2021 16:28:21 +0900 Subject: [PATCH] Support export filenames with non-ASCII chars. (fixes #3724) (#3736) Co-authored-by: Douglas Mennella --- .../google/refine/commands/project/ExportRowsCommand.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/main/src/com/google/refine/commands/project/ExportRowsCommand.java b/main/src/com/google/refine/commands/project/ExportRowsCommand.java index e237db560..d15d153c7 100644 --- a/main/src/com/google/refine/commands/project/ExportRowsCommand.java +++ b/main/src/com/google/refine/commands/project/ExportRowsCommand.java @@ -58,6 +58,7 @@ import com.google.refine.exporters.StreamExporter; import com.google.refine.exporters.WriterExporter; import com.google.refine.exporters.sql.SqlExporterException; import com.google.refine.model.Project; +import com.google.common.net.PercentEscaper; public class ExportRowsCommand extends Command { private static final Logger logger = LoggerFactory.getLogger("ExportRowsCommand"); @@ -105,7 +106,9 @@ public class ExportRowsCommand extends Command { if (!"true".equals(preview)) { String path = request.getPathInfo(); String filename = path.substring(path.lastIndexOf('/') + 1); - response.setHeader("Content-Disposition", "attachment; filename=" + filename); + PercentEscaper escaper = new PercentEscaper("", false); + filename = escaper.escape(filename); + response.setHeader("Content-Disposition", "attachment; filename=" +filename+"; filename*=utf-8' '" + filename); } if (exporter instanceof WriterExporter) {