sách gpt4 ăn đã đi

java - HFS+ 文件系统上 Java 类名称中的非 ASCII 字符

In lại 作者:太空狗 更新时间:2023-10-29 14:14:08 25 4
mua khóa gpt4 giày nike

theoJLS ,如果主机文件系统不支持 Unicode,则可以“破坏”包含非 ASCII 字符的包名称。例如,包 é trở nên @00e9papierMâché 投影到文件时变成 papierM@00e2ch@00e9系统。

问题是:是否有可能对 Java 源文件(其名称必须与相应的 Java 类名称一致)实现同样的效果?

问题的背景是我需要在我的公共(public)类名('é''\u00e9')中有一个带尖音符的重音 e。 是的,我知道我不应该,文件名中的 Unicode 是一种不当行为,但我仍然需要它。

但是,无论是 Mac OS X 还是底层的 HFS+ 文件系统都不允许文件名中的这个字符,将其替换为“e”,紧接着是 COMBINING ACUTE ACCENT (“e\u0301”)。此行为与 NTFS 或 ext3/ext4 完全不同,其中名为 "\u00e9""e\u0301" 的两个文件可以共存于同一目录中(测试存储库是 đây )。

上述 HFS+ 行为导致 2 个问题:

  1. 我无法用 javac 编译我的类,因为类名和文件名不一样(虽然我能够sử dụng编译它们Maven hoặc ecj)。
  2. 我无法使用 Git 管理我的类(class),因为它总是报告文件已重命名:

.

$ git status .
# On branch master
# Untracked files:
# (use "git add ..." to include in what will be committed)
#
# "src/main/java/com/intersystems/persistence/Cache\314\201ExtremeConnectionParameters.java"
# "src/main/java/com/intersystems/persistence/Cache\314\201ExtremePersister.java"
# "src/main/java/com/intersystems/persistence/Cache\314\201JdbcConnectionParameters.java"
# "src/main/java/com/intersystems/persistence/Cache\314\201JdbcPersister.java"
# "src/main/java/com/intersystems/persistence/ui/Cache\314\201JdbcConnectionParametersPanel.java"
nothing added to commit but untracked files present (use "git add" to track)

câu trả lời hay nhất

如果您希望您的名称ASCII 安全,那么您可以将您的java 文件命名为papierM@00e2ch@00e9.java。 ,并确保它在任何其他类尝试引用它之前得到编译。这会起作用,因为 .java 不需要必须是 .java , 然而这是常见的做法,编译器不会尝试编译 ClassAtừ ADifferentFilename.java ,出于显而易见的原因。但是,如果 ADifferentFilename.java已经编译为 ClassA.class , 那么它将起作用。

除此之外,您在以纯 ASCII 命名文件方面运气不佳。

顺便说一句,您提到您已经使用 .gitignore 解决了 git 问题文件,但是您可能会发现更好的方法是 enable the precomposeunicode option in git .

git config --global core.precomposeunicode true

如果你使用它,那么你应该能够拥有你的文件 papierMâché.java并从所有 Linux、Mac 和 Windows 访问它。

关于java - HFS+ 文件系统上 Java 类名称中的非 ASCII 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18866947/

25 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress