无法从文件名中读取特殊字符
Cannot read special characters from the filename
我的情况是 linux 安装的 NAS 包含具有斯堪的纳维亚字符的文件名,例如 ä、ö、å。当我用 ls 列出文件时,我看到所有这些字符都是问号 (?)。如果我 运行 ls -b 我会看到文件名的编码版本。这样的字符:35
我需要从我的 Java 代码中读取那些 文件及其文件名 ,但我无法读取。如果我使用 File.listFiles 列出文件,我得到的是问号而不是正确的字符。如果我将文件转换为路径,我会遇到异常:
java.nio.file.InvalidPathException:输入格式错误或输入包含无法映射的字符
如果我在 运行 设置 Dsun.jnu.encoding=UTF-8 时设置 Dsun.jnu.encoding=UTF-8,我就能摆脱异常,但我又一次得到问号而不是 ä,ö 或 å。
我尝试使用 check=relaxed 等设置挂载不同的 NAS,但运气不好。
感谢所有帮助。
好的,解决了这个问题。如果我从 Linux 登录到我用于 运行 代码的服务器,它不会设置 LC_CTYPE,但是如果我用我的 MAC 登录它会设置它是 UTF-8。因此,应用程序在服务器上的工作方式取决于我使用的 SSH 客户端 运行 它....
我的情况是 linux 安装的 NAS 包含具有斯堪的纳维亚字符的文件名,例如 ä、ö、å。当我用 ls 列出文件时,我看到所有这些字符都是问号 (?)。如果我 运行 ls -b 我会看到文件名的编码版本。这样的字符:35
我需要从我的 Java 代码中读取那些 文件及其文件名 ,但我无法读取。如果我使用 File.listFiles 列出文件,我得到的是问号而不是正确的字符。如果我将文件转换为路径,我会遇到异常:
java.nio.file.InvalidPathException:输入格式错误或输入包含无法映射的字符
如果我在 运行 设置 Dsun.jnu.encoding=UTF-8 时设置 Dsun.jnu.encoding=UTF-8,我就能摆脱异常,但我又一次得到问号而不是 ä,ö 或 å。
我尝试使用 check=relaxed 等设置挂载不同的 NAS,但运气不好。
感谢所有帮助。
好的,解决了这个问题。如果我从 Linux 登录到我用于 运行 代码的服务器,它不会设置 LC_CTYPE,但是如果我用我的 MAC 登录它会设置它是 UTF-8。因此,应用程序在服务器上的工作方式取决于我使用的 SSH 客户端 运行 它....