Java 不支持中文内容处置文件名

Java 不支持中文内容处置文件名,java,file,character-encoding,http-headers,httpresponse,Java,File,Character Encoding,Http Headers,Httpresponse,我一直在尝试下载带有中文文件名的附件,但不知何故,它们的编码在下载时发生了变化,一些乱七八糟的文件名保存在有中文字符的地方 技术:Java 服务器:ApacheTomcat 这是我已经尝试过的 response.setHeader(“内容处置”,“附件;文件名=\”7\u 6\u 4\u AM\u 2017\u JS\u 003_南通凤凰服装_B1_108\”) 输出(下载的附件名称):“7_6_4_AM_2017_JS_003_Wäð” 在参考以下内容后,我还尝试将*附加到文件名指令: r

我一直在尝试下载带有中文文件名的附件,但不知何故,它们的编码在下载时发生了变化,一些乱七八糟的文件名保存在有中文字符的地方

技术:Java 服务器:ApacheTomcat

这是我已经尝试过的

response.setHeader(“内容处置”,“附件;文件名=\”7\u 6\u 4\u AM\u 2017\u JS\u 003_南通凤凰服装_B1_108\”)

输出(下载的附件名称):“7_6_4_AM_2017_JS_003_Wäð”

在参考以下内容后,我还尝试将*附加到文件名指令:


response.setHeader(“内容处置”、“附件;文件名*=\”7\u 6\u 4\u AM\u 2017\u JS\u 003_南通凤凰服装_B1_108\”);

输出(下载的附件名称):“706.txt”

而且

在我的研究中,我发现HTTP头消息不能携带ISO-8859-1字符集之外的字符


提前感谢。

尝试设置字符编码:

response.setCharacterEncoding("UTF-8");
您可能还想先对文件名进行编码:

filename= URLEncoder.encode(fileName, "UTF-8");

设置正在发送的响应的字符编码(MIME字符集) 到客户端,例如,到UTF-8。如果字符编码已更改 已由setContentType(java.lang.String)或 setLocale(java.util.Locale),此方法将覆盖它。使命感 setContentType(java.lang.String),字符串为text/html和 使用UTF-8字符串调用此方法与 使用text/html字符串调用setContentType;字符集=UTF-8。 可以重复调用此方法以更改字符编码。 如果在调用getWriter后调用此方法,则该方法无效 调用或在提交响应后调用。


已尝试响应。setCharacterEncoding(“UTF-8”);让我检查一下文件名编码。你对文件名编码了吗?调用
getWriter()
之前是否设置了CharacterEncoding?请记住在收到响应后解码文件名。我忘了。