我們正在Linux服務器上運行默認語言環境爲「POSIX」的Java Web應用程序。 我們的一些客戶上傳文件名中包含非ascii字符的文件。 我們可以通過統一保留在Java中的非ASCII字符,但他們失去了(保存的文件名會包含很多問號)之後,我們實際上上傳的文件保存到文件系統,因爲文件系統的默認語言環境不支持非-ascii字符。 在使用Java保存文件之前,有什麼方法可以指定文件名(不是內容)的字符集?如何在Java中爲文件名(不是內容)指定一個字符集?
4
A
回答
3
便攜式的Java API沒有一個文件系統字符編碼的概念,因爲這將無法移植:例如視窗無論區域設置如何,都將文件名保存爲unicode。但是,在Linux上,您的語言環境的LC_CTYPE
構面決定了文件系統的編碼。因此,通過出口LC_CTYPE=en_US.utf8
或類似環境之前您啓動Java應用程序,應用程序將使用該文件名的處理。
另請參閱file.encoding has no effect, LC_ALL environment variable does it其中談到了一些這方面的轉換背後的內部的。
0
如果文件是完全你的應用程序的控制下,而不是正在上載的其他應用程序使用,那麼我會考慮之前保存它們,例如做文件名的你自己的編碼/解碼URLEncoder.encode(filename, "UTF-8")
將用戶提供的名稱映射到您可以在磁盤上使用的名稱,反之亦然URLDecoder.decode(encodedName, "UTF-8")
。
相關問題
- 1. 在http頭文件中指定一個字符集爲.ttf文件
- 2. 開發一個KML圖層,只將KML文件內容指定爲字符串?
- 3. 從文本文件如何指定字符在Java中讀取
- 4. 如何檢查磁盤上名爲「 - 」(一個連字符)的文件的內容?
- 5. 如何閱讀,而不是指定一個文件名
- 6. 如何確定一個文件的內容是否包含在另一個文件的內容中
- 7. 如何在c#上的web請求中指定內容字符集?
- 8. 在odbc中爲C++指定字符集
- 9. 如何從java中的文件內容中刪除空字符
- 10. 如何在Java/Android中定義一個新的字符集?
- 11. 如何將文件內容轉換爲字符串在PHP中
- 12. 如何在Java中輸出字符串的文字內容?
- 13. 如何將一個集合指定爲頁面內的數據而不是子文件夾內的頁面?
- 14. 如何在PHP中按名字排序文本文件內容?
- 15. 如何從一個文件夾中打印文件名,該文件夾包含使用java內部的特定遞歸字符串的內容
- 16. 如何在java中讀取/寫入指定字符集的文本
- 17. 如何將.odt文件的內容解析爲Java中的字符串?
- 18. 在PHP中,如何從另一個文件中包含確切的內容(而不是字符串形式)?
- 19. 如何在文件搜索時顯示文件內容而不是文件名
- 20. 如何使郵件的內容爲html格式而不是文本字符串?
- 21. 如何在字符串中讀取文本文件內容php
- 22. 如何在字符串中保存文本文件的內容
- 23. 如何爲ACTION_SEND指定文件名?
- 24. 如何確定指定文件是否放置在指定文件夾內?
- 25. 收集.txt文件的內容作爲字符串,C++
- 26. 如何解碼字符集中的文本並轉換爲Java中的另一個字符集?
- 27. 如何爲一個內容演示者指定3/4?
- 28. Java:爲什麼字符集名稱不是常量?
- 29. 如何在java中用指定字符集和指定長度的md5字符串創建md5?
- 30. 如何保存文件,正是因爲它是從一個字符串的Java
我一直在打我的頭靠在牆上,感謝這個! – eric