2011-09-19 9 views
2

JFileChooserを使用していて、ファイル名に漢字が含まれています。 JFileChooserはそれらを適切に表示し、これらのファイル名をキャプチャしてユーザに表示する必要があります。Java:国際化ファイル名を取得するJFileChooser

私が持っているファイル名:03玩愛之徒.MP3

しかし、私は表示されてしまう:。私を得る私のコードでは03 ???? mp3

を...

File f1 = fileChooser.getSelectedFile(); 
log("f1="+ f1.getName());       // gets me 03 ????.mp3 
byte[] fname1 = f1.getName().getBytes();   // gets me [[email protected] 
byte[] fname2 = f1.getName().getBytes("UTF-16"); // gets me [[email protected] 

私は近くにいると知っていますが、少し助けが必要です。

答えて

2

問題はファイル名ではなく、ログの読み取りに使用されているフォントにあります。ログをファイルに送る場合は、ユニコード互換のエディタで読み込みます。また、ログにBufferedWriterまたは類似のクラスを使用していることを確認してください(ファイル/画面への書き込み用)。

+0

ログ部分を無視する - ファイル名のみをユニコード形式で保存し、これをユーザーに表示しようとしています。私はそれをテーブル形式DefaultTableModelに格納しています。 BufferedWriterはファイルのようですが、私はこの解決策を探し続けます... – rtfminc

+0

DefaultTableModelはJTableで使用されています.JTableはJREで使用可能なフォントを使用します。ユニコード文字列をレンダリングするときは中国語フォントを表示できるフォントでJLabelにファイル名を表示して、JFileChooserを使用してファイルを読むことの問題でないことを確認してください。 –

+0

あなたは正しいです。アジア文字を含むファイル名は、ラベルに正しく表示されます。私はCalibri(Windowsフォント)を使ってテーブルを持っていました。私はユニコードフォントをテーブルに追加しました( "Dialog") - "analysisTable.setFont(uniFont);"それは魅力のように機能します。これを追跡する方向性をありがとう。 – rtfminc