【发布时间】:2012-12-19 17:49:49
【问题描述】:
我有一些带有日文字符的目录/文件。如果我尝试读取包含(例如)一个 ku 的文件名(而不是内容),我会收到一个包含�的字符串。如果我尝试创建一个包含 ク 的文件/目录,则会出现一个包含 ? 的文件/目录。
例如: 我列出了文件。
File file = new File(".");
String[] filesAndDirs = file.list();
filesAndDirs 数组现在包含这些特殊字符的目录。字符串现在只包含����。它接缝没有什么要解码的,因为 getbytes 只为文件名中的每个字符显示“-17 -65 -67”,即使对于不同的字符也是如此。
我使用 MacOS 10.8.2 Java 7_10 和 Netbeans。
有什么想法吗?
提前谢谢你:)
【问题讨论】:
-
不清楚如何显示这些文件名,或者是否提供
String.getBytes()的编码(您始终应该这样做)。您应该为文件名中的每个字符转储 UTF-16 代码点,以查看实际情况。此外,还不清楚您在尝试创建文件时如何获取输入数据。 -
getBytes返回看似有效的 UTF8 -
@Jan 是的,它似乎是有效的 UT8,但 getBytes 为每个字符返回“-17 -65 -67”。但并非文件/目录名称中的所有字符都相同。好像我丢失了操作系统和 JavaVM 之间的所有信息。对每个特殊字符重复“-17 -65 -67”。 [a-zA-Z ...] 按预期返回。我至少希望每个字符都有不同的字节。
-
也许它是有效的 UTF8 吗?
标签: java macos encoding filenames