Javaファイルのエンコードに問題があります。 Javaがファイル名に特殊文字を含むファイルを保存する
私はJavaプログラムが指定したファイル名のファイルとして、入力ストリームを保存します持って、コードスニペットは次のようである:File out = new File(strFileName);
Files.copy(inStream, out.toPath());
ファイル名は、のようないくつかの特殊文字が含まれていない限り、それはWindows上で正常に動作しますÖ
これらの文字をファイル名に使用すると、保存されたファイルはWindows上で文字化けしたファイル名を表示します。
私はJVMオプション-Dfile.encoding=UTF-8
を適用することでこの問題を修正できることを理解していますが、すべてのユーザーにJVMオプションを変更するように求めるのではなく、
プログラムのデバッグ中に、ファイル名の文字列が常に正しい文字を表示することがわかります。そのため、問題は内部エンコードではないと思います。
シーンの後ろに何が間違っているか説明してください。プログラムでこの問題を回避する方法はありますか?私は文字列からバイトを取得し、エンコーディングを変更しようとしましたが、動作しません。
ありがとうございました。 URLEncoder class仕事とを使用して
は、実際に問題を解決するため、 '-Dfile.encoding'オプションを設定していますか?これは、ファイルから読み取るときに使用されるため、ファイル名自体では使用されないためです。どこからファイル名の文字列を取得しますか? – Thilo
実際にはパラメータがファイル名のエンコード方法にも影響するようです:http://stackoverflow.com/questions/9196950/setting-file-name-encoding – Thilo
@Thiloはいこの問題に対してはJVMオプションが有効です。この問題は、スウェーデンのファイル名でテストしたときに発見されました。 –