検索
ホームページJava&#&ベースJavaがファイルをダウンロードするとファイル名が文字化けする

Javaがファイルをダウンロードするとファイル名が文字化けする

Nov 23, 2019 pm 03:04 PM
javaダウンロード文字化け書類

Javaがファイルをダウンロードするとファイル名が文字化けする

Web 開発ファイルのダウンロード機能 (コードは次のとおり) では、ファイル名に漢字が含まれる場合、文字化けが発生することが多いため、エンコードする必要があります。

String fileName = "测试文件.doc";
try {
    HttpServletResponse response = 
    (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
    response.setHeader("Content-disposition", "attachment; filename=" + fileName);
    response.setContentLength((int) file.length());
    response.setContentType("application/octet-stream;charset=UTF-8");
    byte[] b = new byte[1024];
    int i = 0;
    FileInputStream fis = new FileInputStream(file);
    ServletOutputStream out = response.getOutputStream();
    while ((i = fis.read(b)) > 0) {
        out.write(b, 0, i);
    }
    out.flush();
    out.close;
    fis.close();
} catch (IOException e) {
    e.printStackTrace();
}
FacesContext.getCurrentInstance().responseComplete();
return null;

オプション 1: ファイル名を Unicode にエンコードします

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

ファイル名は Unicode エンコードに変換されます。テストは IE ブラウザでは正常ですが、 Firefox ブラウザ テストで得られたファイル名はデコードされていない Unicode です。

オプション 2: ファイル名を ISO-8859-1 にエンコードする

fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");

この方法では、IE と Firefox の両方で中国語のファイル名を持つファイルを取得できます。ただし、ファイル名にスペースが含まれている場合、Firefox はファイル名からスペースを切り捨てるため、エンコードする前にファイル名のスペースをアンダースコアなどの目に見える文字に置き換える必要があります。

fileName = new String(fileName.replace(" ", "_").getBytes("UTF-8"), "ISO-8859-1");

オプション 3: ブラウザの非互換性

Java Web 開発では、ファイルのダウンロード機能でファイル名が文字化けするという問題がよく発生します。ブラウザーが異なれば、この問題に対する解決策も異なります。

IE の場合、ファイル名は URLEncoder を通じて UTF8 でエンコードされますが、他のブラウザ (Firefox、Chrome、safari、opera) ではバイトを ISO8859-1 に変換する必要があります。

if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0) {
    filename = URLEncoder.encode(filename, "UTF-8");
} else {
    filename = new String(filename.getBytes("UTF-8"), "ISO8859-1");
}

推奨チュートリアル: Java 開発の入門

以上がJavaがファイルをダウンロードするとファイル名が文字化けするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。