使用 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 编程语言提供...
我了解到,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 编程语言提供...