无法从文件名中读取特殊字符

时间:2015-03-13 08:48:05

标签: java linux encoding

我的情况是linux安装的NAS包含具有Ä,ö,å等斯堪的纳维亚字符的文件名。当我用ls列出文件时,我将所有这些字符看作问号(?)。如果我运行ls -b,我将看到filename的编码版本。像这样的人物:\ 303 \ 205

我需要从我的Java代码中读取那些文件及其文件名,但我无法做到。如果我使用File.listFiles列出文件我得到问号而不是正确的字符。如果我将File转换为Path我会遇到异常: java.nio.file.InvalidPathException:格式错误的输入或输入包含不可映射的字符
我可以摆脱异常,如果我在运行时设置Dsun.jnu.encoding = UTF-8,但我再次得到问号而不是ä,ö或å。

我尝试使用check = relax这样的设置安装NAS,但没有运气。

感谢所有帮助。

1 个答案:

答案 0 :(得分:0)

好的,解决了这个问题。如果我从Linux登录到我用来运行代码的服务器,它不会设置LC_CTYPE,但是如果我使用我的MAC登录它会将它设置为UTF-8。因此,应用程序在服务器上的工作方式取决于我用来运行它的SSH客户端....