我遇到的情况是,Linux挂载的NAS包含文件名,该文件名具有斯堪的纳维亚字符,例如ä,ö,å。当我用ls列出文件时,我看到所有这些字符都作为问号(?)。如果运行ls -b,我将看到文件名的编码版本。像这样的字符:\ 303 \ 205
我需要从Java代码中读取这些文件及其文件名,但我无法读取。如果我使用File.listFiles列出文件,则会得到问号而不是正确的字符。如果我将File转换为Path ,则会遇到异常:java.nio.file.InvalidPathException:格式错误的输入或输入包含不可映射的字符
,如果我在以下情况下设置了Dsun.jnu.encoding = UTF-8,便可以摆脱该异常运行它,但是我再次得到问号,而不是ä,ö或å。
我尝试通过check = relaxed之类的设置来挂载不同的NAS,但运气不佳。
感谢所有帮助。
好的,解决了这个问题。如果我从Linux登录到用于运行代码的服务器,则它不会设置LC_CTYPE,但是,如果我使用MAC登录,则不会设置UTF-8。因此,应用程序在服务器上的工作方式取决于我用来运行它的SSH客户端。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句