簡體   English   中英

Java使用文件名中的特殊字符保存文件

[英]Java saving a file with special characters in file name

我在Java文件編碼方面遇到了問題。

我有一個Java程序將輸入流保存為具有給定文件名的文件,代碼片段如下:

File out = new File(strFileName);
Files.copy(inStream, out.toPath());

它在Windows上運行正常,除非文件名包含一些特殊字符,如Ö ,文件名中包含這些字符,保存的文件將在Windows上顯示亂碼文件名。

我理解通過應用JVM選項-Dfile.encoding=UTF-8可以解決這個問題,但我會在我的代碼中找到一個解決方案,而不是讓我的所有用戶都改變他們的JVM選項。

在調試程序時,我可以看到文件名字符串始終顯示正確的字符,所以我猜問題不在於內部編碼。

有人可以解釋一下幕后出了什么問題嗎? 有沒有辦法以編程方式避免這個問題? 我嘗試從字符串中獲取字節並更改編碼,但它不起作用。

謝謝。

使用URLEncoder類可以工作:

String name = URLEncoder.encode("fileName#", "UTF-8");
File output = new File(name);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM