2011-09-19 34 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

問題不在於文件名中,而在於正在用於讀取日誌的字體。如果您正在將日誌導向文件,請嘗試在兼容Unicode的編輯器中讀取日誌,並確保日誌使用BufferedWriter或類似的類(用於寫入文件/屏幕)。

+0

忽略日誌部分 - 我試圖只保存unicode格式的文件名並將其顯示回給用戶。我以表格格式DefaultTableModel存儲它。 BufferedWriter似乎是爲文件,我會繼續尋找解決方案... – rtfminc

+0

JTable使用DefaultTableModel,它使用JRE可用的字體,經常顯示?或渲染unicode字符串時的框。嘗試使用能夠顯示中文字體的字體在JLabel中顯示文件名,以確保其不會使用JFileChooser讀取文件。 –

+0

你是對的。帶有亞洲字符的文件名正確顯示在標籤中。我有使用Calibri的桌子(windows字體)。我在表格中添加了一個unicode字體(「Dialog」) - 「analysisTable.setFont(uniFont);」它就像一個魅力。感謝您的跟蹤方向。 – rtfminc