検索
ホームページJava&#&ベースJava ダウンロードでファイル名が文字化けする場合の解決策の紹介

Java ダウンロードでファイル名が文字化けする場合の解決策の紹介

java Web 開発ファイルのダウンロード機能 (コードは次のとおり) では、ファイル名に漢字が含まれる場合、文字化けが発生することが多く、エンコードが必要です。 (推奨事項: java ビデオ チュートリアル )

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 エンコードに変換されます (test file.doc) )、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 基本チュートリアル 列に注目してください。

以上が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 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

MantisBT

MantisBT

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

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい