首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OS X文件名中的变音(perl)

OS X文件名中的变音(perl)
EN

Stack Overflow用户
提问于 2011-04-27 00:42:33
回答 1查看 857关注 0票数 1

我在OS X的文件名中遇到了一些变音(ü字符)的问题。我是从perl脚本创建目录的。从概念上讲,我所做的是:

代码语言:javascript
运行
复制
$NAME = "abcüabc";
$PATH = "/Applications/MyProgram/".$NAME."/";
system('ditto', '--rsrc', $FROMPATH, $PATH . $FILENAME);

这将创建名为"/Applications/MyProgram/abs%9Fabc/"的文件夹。

有人知道我如何修复这个问题以创建包含正确字符的目录吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-27 02:13:11

你必须说:

代码语言:javascript
运行
复制
use utf8;

如果您希望将这些字符串解释为字符而不是二进制,请在Perl源代码中使用。

代码语言:javascript
运行
复制
% uname -a
Darwin arwen 10.4.0 Darwin Kernel Version 10.4.0: Fri Apr 23 18:28:53 PDT 2010; root:xnu-1504.7.4~1/RELEASE_I386 i386

% cat /tmp/makeit 
use utf8;

$name = "abcüabc";
$path = "/tmp/$name";

mkdir($name,0777) || die "can't mkdir $path: $!";

% perl /tmp/makeit

% ls -dF /tmp/abc*
/tmp/abcüabc/

看见?如果你这么做了,它就会工作得很好。

编辑:您正在使用MacRoman!

代码语言:javascript
运行
复制
% macroman 0x9F
MacRoman 0x9F  ⇒  U+00FC  ‹ü›  \N{LATIN SMALL LETTER U WITH DIAERESIS}

而且无论如何在文件系统中都不能有字符U+00FC,因为它会分解为后面跟着"\N{COMBINING DIAERESIS}""u"。您是否真的在Perl源代码中输入了MacRoman字符?你是怎么做的呢?请转换为Unicode!!Perl不知道你的源代码是用遗留的MacRoman编写的!U+009F是一个控制码,意思是“\N{应用程序命令}”。

在这里,看:

代码语言:javascript
运行
复制
% cat /tmp/makeit
use utf8;

$name = "abcüabc";
$path = "/tmp/$name";

mkdir($name,0777) || die "can't mkdir $path: $!";

% uniquote /tmp/makeit
use utf8;

$name = "abc\N{U+FC}abc";
$path = "/tmp/$name";

mkdir($name,0777) || die "can't mkdir $path: $!";

% uniquote -v /tmp/makeit
use utf8;

$name = "abc\N{LATIN SMALL LETTER U WITH DIAERESIS}abc";
$path = "/tmp/$name";

mkdir($name,0777) || die "can't mkdir $path: $!";

% uniquote -b /tmp/makeit
use utf8;

$name = "abc\xC3\xBCabc";
$path = "/tmp/$name";

mkdir($name,0777) || die "can't mkdir $path: $!";

% perl /tmp/makeit

% ls -Fd /tmp/abc* | uniquote -v
/tmp/abcu\N{COMBINING DIAERESIS}abc/

你可以使用grab the program from here。它将向您显示文件中的真实内容。您还可以获得 script

您似乎以某种方式在Perl代码中输入了丑陋的旧MacRoman。请转换成Unicode!

代码语言:javascript
运行
复制
% iconv -f MacRoman -t UTF-8 < input > output
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5793548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档