gpt4 book ai didi

java 读写 unicode/UTF-8 文件名(不是内容)

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:28:12 26 4
gpt4 key购买 nike

我有一些带有日语字符的目录/文件。如果我尝试读取包含(例如)一个 ku 的文件名(不是内容),我会收到一个包含 � 的字符串。如果我尝试创建一个包含 ku 的文件/目录,则会出现一个包含 ? 的文件​​/目录。

例如:我列出了文件。

File file = new File(".");  
String[] filesAndDirs = file.list();

filesAndDirs 数组现在包含特殊字符的目录。该字符串现在仅包含 ����。它接缝没有什么可解码的,因为对于文件名中的每个字符,即使对于不同的字符,a getbytes 也只显示“-17 -65 -67”。

我使用 MacOS 10.8.2 Java 7_10 和 Netbeans。

有什么想法吗?

提前谢谢你:)

最佳答案

这些字节是 0xef 0xbf 0xbd,这是您看到的\ufffd 字符的 UTF-8 编码形式,而不是日文字符。看来 Java 用来列出文件的任何操作系统功能实际上都在返回那些不正确的字符。

也许 Files.newDirectoryStream 会更可靠。试试这个:

try (DirectoryStream<Path> dir = Files.newDirectoryStream(Paths.get("."))) {
for (Path child : dir) {
String filename = child.getFileName().toString();

System.out.println("name=" + filename);
for (char c : filename.toCharArray()) {
System.out.printf("%04x ", (int) c);
}
System.out.println();
}
}

关于java 读写 unicode/UTF-8 文件名(不是内容),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14171565/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com