2015-03-13 35 views
1

讀取特殊字符我有這樣Linux安裝NAS包括具有斯堪的納維亞的字符如A,O,A文件名的情況。當我用ls列出文件時,我將所有這些字符看作問號(?)。如果我運行ls -b,我會看到文件名的編碼版本。這樣的字符:\ 303 \ 205無法從文件名

我需要從我的Java代碼讀取那些文件及其文件名,但我無法。如果我使用File.listFiles列出文件,我得到的是問號而不是正確的字符。如果我將文件轉換爲路徑我得到異常: java.nio.file.InvalidPathException:格式錯誤的輸入或輸入包含無法映射的字符
我能擺脫例外,如果我設置Dsun.jnu.encoding = UTF-8運行時,但我再次得到問號而不是ä,ö或å。

我試圖裝載NAS不同的設置,如檢查=放鬆,但沒有運氣那裏。

所有幫助表示讚賞。

+0

可以打印*數字*你得到一個文件名字符值,而無需使用Dsun.jnu.encoding = UTF例外-8並將其添加到您的問題,連同正確的文件名? – laune 2015-03-13 08:57:23

+0

如果「ls」沒有正確顯示文件名,這已經是件壞事了。你是否將你的(系統默認)編碼設置爲UTF-8?如果沒有,Java不能幫助。 (我假設NAS使用UTF-8,否則會更復雜)。 – Bram 2015-03-13 09:08:39

+0

如果我登錄到使用Mac Cyber​​duck的服務器和去安裝,我可以看到正確的字符... – tomtom 2015-03-13 09:17:51

回答

0

好的,解決了這個問題。如果我從Linux登錄到我用來運行代碼的服務器,它不會設置LC_CTYPE,但是如果我使用我的MAC登錄,它將它設置爲UTF-8。因此,應用程序如何在服務器上是依賴於SSH客戶端我用它來運行它....