gpt4 book ai didi

java - 从 Java 中创建新文件时无法正确使用拉丁字符。文件名出现奇怪的字符而不是正确的字符

转载 作者:行者123 更新时间:2023-12-02 02:37:02 24 4
gpt4 key购买 nike

当前正在将 hashmap 中的 int[] 保存在文件中,并使用 int[] 的键名称。这个确切的键必须可以从另一个程序访问。因此我无法将文件名切换为仅英文字符。但即使我使用 ISO_8859_1 作为文件名的字符集,文件在文件树中也会变得困惑。英文字母正确,但特殊字母不正确。

        /**
* Save array to file
*/
public void saveStatus(){
try {
for(String currentKey : hmap.keySet()) {
byte[] currentKeyByteArray = currentKey.getBytes();
String bytesString = new String(currentKeyByteArray, StandardCharsets.ISO_8859_1);
String fileLocation = "/var/tmp/" + bytesString + ".dat";
FileOutputStream saveFile = new FileOutputStream(fileLocation);
ObjectOutputStream out = new ObjectOutputStream(saveFile);
out.writeObject(hmap.get(currentKey));
out.close();
saveFile.close();
System.out.println("Saved file at " + fileLocation);
}
} catch (IOException e) {
e.printStackTrace();
}
}

这是否与 linux 编码字符的方式有关,或者更可能与 Java 代码有关?

编辑

我认为问题出在操作系统上。因为例如使用 cat 查看文本文件时,问题是相同的。然而 vim 能够正确解码这些字母。在这种情况下,我可能必须从终端更改语言设置?

最佳答案

您还必须更改 getBytes 函数中的字符集。

currentKey.getBytes(StandardCharsets.ISO_8859_1);

另外,为什么要使用 StandardCharsets.ISO_8859_1?要接受更广泛的字符,请使用 StandardCharsets.UTF_8

关于java - 从 Java 中创建新文件时无法正确使用拉丁字符。文件名出现奇怪的字符而不是正确的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46176626/

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