【发布时间】:2011-08-13 04:58:23
【问题描述】:
我在 OS X 上的文件名中遇到了一些变音符号(ü 字符)的问题。我正在从 perl 脚本创建目录。从概念上讲,我正在做的是:
$NAME = "abcüabc";
$PATH = "/Applications/MyProgram/".$NAME."/";
system('ditto', '--rsrc', $FROMPATH, $PATH . $FILENAME);
这将创建名为 "/Applications/MyProgram/abs%9Fabc/" 的文件夹。
任何人都知道如何解决这个问题以创建具有正确字符的目录?
【问题讨论】:
-
天哪!您正在使用 MacRoman! MacRoman 0x9F ⇒ U+00FC ‹ü› \N{LATIN SMALL LETTER U WITH DIAERESIS}。无论如何,文件系统中不能有字符 U+00FC,因为它分解为
"u",后跟"\N{COMBINING DIAERESIS}"。你真的在你的 Perl 源代码中输入了 MacRoman 字符吗?然而,你做了那个吗?请转换为Unicode! Perl 不知道您的源代码在旧版 MacRoman 中! U+009F 是一个控制代码,意思是“\N{APPLICATION PROGRAM COMMAND}”。 -
我不知道为什么,但是 tchrists 的评论非常令人毛骨悚然 =/
-
@JustSid:“令人毛骨悚然”?真的吗?怎么会?当我意识到发生了什么时,我惊呆了。我不明白为什么他会看到
%9F而不是ü,我认为ls只用于控制字符,而不用于字母。所以我查了一下代码点 U+009F 是什么,果然,它是一个控制字符。比我通过macroman 运行它,而ᴇᴜʀᴇᴋᴀ﹗ 我仍在试图弄清楚的是什么邪恶的,邪恶的编辑器默认为 MacRoman 的 OS X 之前的遗留编码。没有什么是默认的。 -
-
它没有默认为 MacRoman 编码,但在我切换到它之前,我在 perl 脚本中的 AppleScript 调用没有正确显示变音符号。我想我可能可以切换回源文件的 UTF8 编码并重写 AppleScript 以某种方式工作。 (我正在使用 MacPerl,在尝试了多种调用 AppleScripts 的方法之后,这是最好的)。
标签: macos perl unicode diacritics unicode-normalization