2010-12-27 6 views
5

ブラウザにファイルを送信するサーブレットがあります。ファイルダウンロードサーブレットのUTF-8エンコーディングを設定する方法

このヘッダーはサーブレットで送信します。

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); 
     }       
    } 

次に、ファイルをブラウザに送信しますが、ファイルのエンコードに問題があります。ファイルの内容はUTF-8ですが、ヘッダーの送信方法はわかりません。

どうすればいいですか?

答えて

10

ファイルがUTF-8でエンコードされていることをブラウザに伝える必要はありません。コンテンツタイプをapplication/octet-streamに設定すると、ファイルを解釈してはならないと指定し、プレーンテキストではないことを指定します。

エンコーディングを絶対に宣言したい場合は、ファイルをapplication/octet-streamとして宣言しないで、代わりに "text/plain; charset = utf-8"と宣言してください。

+0

私は間違ったエンコーディングの問題に直面していました.HTMLファイルをダウンロードすると、 'Accept:application/octet-stream'ヘッダを使ってトリックが行われました。 –

3

response.setCharacterEncoding( "utf-8");

関連する問題