一、问题描述
ginexcel

response.xls
filename := "测试.xlsx"response.xls

二、解决
Content-Disposition
如果,你设置成了下面这样,那么就会触发中文文件名乱码问题:(注意这是错误的设置!)
c.Writer.Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename=%s", filename))
解决这个问题,需要修改两个地方:
Content-Disposition
c.Writer.Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename*=utf-8''%s", filename))
*=utf-8''
filenameurl.QueryEscape
filename := url.QueryEscape("测试.xlsx")
部分关键代码示例:
filename := url.QueryEscape("测试.xlsx")
c.Writer.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate")
c.Writer.Header().Set("Pragma", "no-cache")
c.Writer.Header().Set("Expires", "0")
c.Writer.Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename*=utf-8''%s", filename))
c.Writer.Header().Set("Content-Type", "application/vnd.ms-excel")
c.Writer.Header().Set("Content-Transfer-Encoding", "binary")
http.ServeContent(c.Writer, c.Request, filename, time.Now(), cont)
utf-8

在弹出窗口中,看到的是正确的文件名:

【END】