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

在java中使用unicode字符命名文件,java,javac,Java,Javac,我了解到,Java允许文件名使用unicode字符 如何命名文件, naive.java, 使用英文键盘 是否有一种类似于unicode转义符号(在java源代码中使用)的符号,我们可以使用它来命名带有unicode字符的java文件?java中的所有String对象都包含UTF-16 unicode。所有打开文件的Java对象最终都将这些文件命名为字符串 然而,键盘不是Java的问题,而是操作系统的问题 因此: 您对问题进行了编辑,以表明您真正想要的是具有有趣字符的Java源文件。这是您最喜欢

我了解到,Java允许文件名使用unicode字符

如何命名文件,
naive.java
, 使用英文键盘


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

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

然而,键盘不是Java的问题,而是操作系统的问题

因此:

您对问题进行了编辑,以表明您真正想要的是具有有趣字符的Java源文件。这是您最喜欢的文本编辑器和操作系统的问题


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

您似乎指的是:

包名组件或类名可能包含无法正确显示在主机文件系统的普通目录名中的字符,例如系统上仅允许在文件名中使用ASCII字符的Unicode字符。按照惯例,可以使用@字符后跟给出字符数值的四个十六进制数字对字符进行转义,如\uxxx转义(§3.3)

根据本公约,软件包名称:

children.activities.crafts.papierM\u00e2ch\u00e9
也可以使用完整的Unicode编写,如:

children.activities.crafts.papierMâché
可能映射到目录名:

children/activities/crafts/papierM@00e2ch@00e9
请注意,这是一种约定,仅适用于主机文件系统不支持的字符。因此,第一个障碍是在文件系统API中找到一个不支持Unicode的系统,然后才能检查
javac
是否仍然遵守此约定

因此,对于大多数系统,如果您想命名一个文件
naive.java
,不仅支持直接以这种方式命名,还必须以这种方式命名,因为设计用于仅在不需要它的系统上运行的工具不支持回退转义方案

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

  • 打开浏览器
  • 导航到此问题并用鼠标标记
    nave.java
  • 按ctrl+c组合键
  • 使用您喜爱的工具创建一个新的
    .java
    文件
  • 当要求输入新名称时,按ctrl+v组合键

作为一种通用解决方案,不要使用Java编程语言提供的所有功能。…

您所说的“解释”是什么意思?Java读取和写入文件,就像系统上的任何其他进程一样。@jbnize我的意思是,如果您使用
@00ef
符号来表示文件名称的unicode字符,
javac
如何解释此符号?您在哪里找到符号@00ef?Java不会知道的。@b我发现了符号。出于好奇;编辑用户界面的一个错误导致了此操作的重复。
children/activities/crafts/papierM@00e2ch@00e9