2

我在java中有String,它是包含变音符号的文件名。文件正确存储在 Win 7 Pro 磁盘上(元音变音等正确显示在资源管理器文件列表中)。我还尝试将文件名保存到文本文件,然后使用变音符号正确输出文件名。但是当我使用 File 中的方法 exists() 时,它说文件不存在。如果我尝试使用方法 createNewFile(),它会创建像 ä.txt(最初是 ä.txt)这样的文件。我的设置可能有什么问题?我正在使用 Tomcat 6 和 Eclipse 来运行我的 Web 应用程序。

4

1 回答 1

2

如果文件名将作为静态常量包含在源代码中,则执行代码的位置不会有所不同,但是当您从远程地址读取文件名时,它会产生显着差异。

默认情况下,每个 Java 实例都作为 Windows 上的默认字符集,这通常是“Cp1252”,在其他系统上通常是“UTF-8”。因此,从/向网络或文件系统读取或写入字符串的每个方法都使用默认字符集 - 只要您不使用明确指定字符集的方法版本。

因此,将文件名写入文件并不能说明一切,因为它是否正确显示取决于您使用的文本编辑器,而不是编写它的 Java 程序。

结论:检查您的代码并确保您明确设置了字符集。这getBytes()与 String 的方法以及每个将 Reader/Writer 实例连接到 InputStream/OutpuStream 的地方尤其相关。

于 2012-06-08T09:42:16.107 回答