당신은 말해야한다.
% 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을 사용 중입니다!
% macroman 0x9F
MacRoman 0x9F ⇒ U+00FC ‹ü› \N{LATIN SMALL LETTER U WITH DIAERESIS}
그리고 그것은 "\N{COMBINING DIAERESIS}"
다음에 "u"
으로 분해하기 때문에 당신은 어쨌든 파일 시스템의 문자 U + 00FC을 가질 수 없습니다. 실제로 Perl 소스 코드에 MacRoman 문자를 입력 했습니까? 그러나 당신은 THAT을 했습니까? 유니 코드로 변환하십시오 !! Perl은 소스 코드가 기존 MacRoman에 있다는 것을 전혀 모릅니다! U + 009F는 "\ N {APPLICATION PROGRAM COMMAND}"를 의미하는 제어 코드입니다. 여기
는 시계 :
당신은
grab the uniquote program from here 수
% 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/
. 실제로 파일에있는 내용을 보여줍니다. macroman script을받을 수도 있습니다.
어떻게 든 Perl 코드에 추한 오래된 MacRoman을 입력 한 것으로 보입니다. 제발 유니 코드로 변환하십시오!
% iconv -f MacRoman -t UTF-8 <input> output
** OMIGOD! 당신은 MacRoman을 사용하고 있습니다! ** MacRoman 0x9F ⇒ U + 00FC <ü> \ N {대화 상대와 함께 작은 편지}. 그리고 어쨌든 파일 시스템에 U + 00FC라는 문자를 사용할 수 없습니다. 왜냐하면 파일 시스템은''u ''와''\ N {COMBINING DIAERESIS}''에 이어 분해되기 때문입니다. 실제로 Perl 소스 코드에 MacRoman 문자를 입력 했습니까? 그러나 당신은 ** 그 **을 했습니까? 유니 코드로 변환하십시오 !! Perl은 소스 코드가 기존 MacRoman에 있다는 것을 전혀 모릅니다! U + 009F는 "\ N {APPLICATION PROGRAM COMMAND}"를 의미하는 제어 코드입니다. – tchrist
나는 왜 그런지 모르지만, tchrists 코멘트는 꽤 오싹하다./ – JustSid
@JustSid : "Creepy"? 정말? 어째서? 내가 무슨 일이 일어 났는지 깨달았을 때 나는 몹시 괴롭 혔다. 왜''ü '대신에'% 9F'를 보았는지 알 수 없었습니다.''나는''문자'가 아닌 제어 문자에서만 생각했습니다. 그래서 나는 U + 009F 코드 포인트를 보았고, 그 코드는 제어 문자였습니다. Macroman (http://training.perl.com/scripts/macroman)을 통해 실행 한 것보다 낫지 만 여전히 내가 알아 내려고 애쓰는 것은 wicked하고 사악한 편집자가 pre-OS X 레거시를 기본값으로 사용하는 것입니다 MacRoman의 인코딩. 아무것도 기본 설정하지 않아야합니다. – tchrist