如何为文件下载servlet设置UTF-8编码

Ign*_*cio 5 java encoding servlets

我有一个servlet将文件发送到浏览器.

我在servlet中发送这个头文件.

if (request.isSecure()) {
            response.addHeader("Pragma", "no-cache");
            response.addHeader("Expires", "-1");
            response.addHeader("Cache-Control", "no-cache");
    } else {
            response.addHeader("Cache-Control", "private");
            response.addHeader("Pragma", "public");
    }

    if (isIE) {
            response.addHeader("Content-Disposition", "attachment; filename=\"" + encName + "\"" );
            response.addHeader("Connection", "close");
            response.setContentType("application/force-download; name=\"" + encName + "\"" );
    } else {
        response.addHeader("Content-Disposition", "attachment; filename=\"" + encName + "\"" );
        response.setContentType("application/octet-stream; name=\"" + encName + "\"" );
        if (contentLen > 0) {
            response.setContentLength(contentLen);
        }                        
    }
Run Code Online (Sandbox Code Playgroud)

然后我将文件发送到浏览器,但我遇到了文件编码的麻烦.该文件的内容是UTF-8,但我不知道如何为此发送标头.

有谁知道我该怎么办?

Mar*_*wis 10

无需告诉浏览器该文件是UTF-8编码的.通过将内容类型设置为application/octet-stream,您可以指定不能解释该文件,并且可能根本不是纯文本.

如果您绝对要声明编码,请停止将该文件声明为application/octet-stream,并将其声明为"text/plain; charset = utf-8".

  • 我在下载html文件时遇到了编码错误的问题,发现使用`Accept:application / octet-stream`标头可以解决问题。 (2认同)

Gur*_*oca 5

response.setCharacterEncoding("utf-8");