使用 java 中的 unicode 字符命名文件

Naming a file using unicode characters in java

我了解到,Java 允许文件名包含 unicode 字符。

如何命名文件, naïve.java, 使用英文键盘?

是否有类似于 unicode 转义符号(在 java 源代码中使用)的符号,我们可以使用它来命名 java 带有 unicode 字符的文件?

Java 中的所有 String 个对象都包含 UTF-16 Unicode。所有打开文件的 Java 对象最终都会将这些文件命名为字符串。

但是,您的键盘不是Java的问题,而是您的操作系统的问题。

所以:

File foo = new File("n\u00e4ive.java");

您编辑了问题,说您真正想要的是拥有一个包含有趣字符的 Java 源文件。这取决于您最喜欢的文本编辑器和操作系统。

Java 非常乐意编译具有任意名称的文件。但是,创建这些文件和管理这些文件不是它的问题。如何创建这样的文件取决于您和您的操作系统。 Windows、Linux、OSX:它们都有不同的工具来输入不属于明显键盘映射的 Unicode 字符。

看来你指的是JLS §7.2 “Host Support for Packages”:

A package name component or class name might contain a character that cannot correctly appear in a host file system's ordinary directory name, such as a Unicode character on a system that allows only ASCII characters in file names. As a convention, the character can be escaped by using, say, the @ character followed by four hexadecimal digits giving the numeric value of the character, as in the \uxxxx escape (§3.3).

Under this convention, the package name:

children.activities.crafts.papierM\u00e2ch\u00e9

which can also be written using full Unicode as:

children.activities.crafts.papierMâché

might be mapped to the directory name:

children/activities/crafts/papierM@00e2ch@00e9

请注意,这被描述为 约定 ,并且仅适用于主机文件系统不支持的字符。所以第一个障碍是在文件系统 API 中找到不支持 Unicode 的系统,然后才能检查 javac 是否仍然遵守此约定。

所以对于大多数系统来说,如果你想命名一个文件naïve.java,不仅支持直接这样命名,你还必须命名它这样一来,设计为 运行 的工具仅在不需要它的系统上不支持回退转义方案。

这引出了您关于如何通过键盘输入的另一个问题。好吧,这取决于系统。最便携的解决方案是:

  • 打开浏览器
  • 导航到此问题并用鼠标标记naïve.java
  • ctrl+c
  • 使用您最喜欢的工具创建新的 .java 文件
  • 当询问新名称时,按 ctrl+v

作为一般解决方案,不要使用每个功能,Java 编程语言提供...