2010-11-25 8 views
0

英語以外のファイル名を扱う場合。英語以外のファイル名のアクセス方法

問題は私のプログラムがそれらのディレクトリを保証することができず、ファイル名が英語であることです。日本語、中国語を使用するファイル名は '?'のような文字を表示します。

誰でもワット私を提案することができ、私はJavaがネイティブにUnicodeを使用して英語以外のファイル名に

+0

これはどの言語とプラットフォームですか? –

+4

あなたの問題は何ですか?あなたは特殊文字を置き換えているようですので、問題は何ですか? –

+2

私はここで鈍くなるでしょう。あなたはあなたのプログラムが何をしているのか、どこに問題があるのか​​を正確には明らかにしていません。ファイル名の表示に問題がありますか?もしそうなら、それはどのようにファイル名を表示していますか?それはSwingアプリケーションか、Spring、JSF、Wicketなどを使用するWebアプリケーションですか?あなたが入れたコードから、私はあなたが最終的にANSIまたはISO-8859-1文字を扱っている場合には問題を引き起こしてはならない "特殊"文字が表示されないようにしようとしていることを推論することしかできません。 –

答えて

2

にアクセスするために必要 - すべてのコードポイント - ユニコード特別な文字を持っていないとして、あなたは、特殊文字を置き換える必要はありません等しく扱われる。あなたのreplaceSpChars()はここでの犯人かもしれません。

+0

私のアクチュアールの問題は、私のemai idにある1つのpdfファイルにアクセスしています。これはpdfが英語のcharcterのときにうまくいきます。 – vijay

+0

しかし、pdfに英語以外のものが含まれている場合は、ファイル名自体を読み取っていません – vijay

+0

このタグに正確な方法を貼り付けておいてください。 – vijay

3

私のプログラムでは、これらのディレクトリとファイル名が英語であることを保証できないという問題があります。ファイル名が日本語を使用する場合、中国語の文字に '?'のような文字が表示されます。

明らかに、 "it"はファイル名を表示するために間違った文字セットを使用しています。その解決策は、 "it"があなたのプログラム(GUI経由)、他のアプリケーション、コマンドシェル/ターミナルエミュレータ、またはユーザのウェブブラウザであるかどうかによって決まります。より多くの情報を提供できるなら、多分私はいくつかの提案を提供することができます。

しかし、文字を下線に変えることは、おそらく悪い解決策です。ファイル名の衝突につながる可能性があり、これらの中国語/日本語/その他の文字は、ファイルを作成した人にとって意味がありそうです。

ところで、「英語」の文字の正しい用語はラテン語です。あなたのユースケースについては

EDIT

、あなたは付属のファイル名とは関係を負担するファイル名を使用してPDFファイルを保存しません。ラテン数字と(例えば)currentTimeInMillis()から生成された文字からなるファイル名を使用して、この問題を解決しようとすることをお勧めします。それが失敗すると、本当の問題はファイル名とまったく関係がありません。

EDIT 2

あなたは声明これは、MIME encoded-word形式でファイル名を選択解除しようとしているように見える

if (fileName.startsWith("=?iso-8859")) 

について尋ねます。 RFC 2047 Section 2

まず、コードが不要かもしれないと思います。 javadocは具体的ではありませんが、私はPart.getFilename()メソッドはファイル名のデコードを扱うべきだと思います。

第2に、デコードが必要な場合は間違った方向に進むでしょう。文字セットの後のものは単にファイル名の値として扱うことはできません。 RFCを見てください。

第3のが必要な場合は、関連するMimeUtilityメソッドを使用して、ファイル名のように "単語"トークンをデコードする必要があります。

第4に、ISO-8859-1は、ラテン文字以外の文字セットの文字には適していません。

最後に、あなたがデコードし、ファイル名は「=?ISO-8859-1のように見える場合

Content-Disposition: attachment; filename=... 

を開始ヘッダ行を探ししようとしている電子メールの生のEメールヘッダを調べます?。 .. "、ファイル名には日本語/中国語/その他の文字が含まれているはずですが、問題はメールを作成したクライアント(または何でも)にあります。文字セットは "utf-8"または他のマルチバイト文字セットの1つである必要があります。

+0

yes stephen u r correct – vijay

+0

メールに添付されているpdfファイルにアクセスしようとしていますが、このメール添付ファイル名が正常な英語であればうまくいきます。それは非英語私のプログラムが付属していた場合、それを読み取ることができません、この – vijay

+0

私functionis(パート部分、文字列strFolderName) は例外 を{ が { sFn_logFetchMailErrMsg( 「saveAttachmentsを試してみてください投げます(パートパート、文字列strFolderName):開始 "、 "情報 "); sFn_logFetchMailErrMsg( "ファイルは" + strFolderName、 "DEBUG"にダウンロードされます。 マルチパートmultipart = null; Part subPart = null; 文字列strDisposition = part.getDisposition(); オブジェクトobjContent = part.getContent(); – vijay

関連する問題