Net :: FTP를 사용하여 PVR (위성 수신기)에 액세스하고 녹화 된 비디오 파일을 검색합니다. dir()
서브 루틴을 사용하는 모든 파일 목록을 얻는 것이 좋지만 파일 이름에 ASCII가 아닌 문자가 포함되어있는 경우 mtdm()
및 get()
을 호출하면이 파일에 대해 실패합니다. 다음은 독일어 ("움라우트"포함)의 예입니다.Perl Net :: 파일 이름에 FTP 및 비 ASCII (UTF8) 문자
Net::FTP=GLOB(0x253d000)>>> MDTM /DataFiles/Kommissar Beck ~ Tödliche Kunst.rec
Net::FTP=GLOB(0x253d000)<<< 550 Can't access /DataFiles/Kommissar Beck ~ Tödliche Kunst.rec
ASCII 문자 만 포함하는 파일 이름이 정상적으로 작동합니다. 다른 FTP 소프트웨어를 통해 비 ASCII 문자로 파일에 액세스하는 것도 잘 작동합니다.
누구나 내가이 작업을 어떻게 할 수 있을지 생각하지 못합니까? 분명히 단순히 파일 이름에서 "움라우트"를 피할 수는 없습니다.
대부분의 OS와 Perl은 파일 이름을 임의의 바이트로 간주하므로 질문 : Net :: FTP로 전달한 바이트 수는 얼마입니까? 어떤 바이트가 해당 시스템의 파일 이름을 구성합니까? Data :: Dumper with'local $ Data :: Dumper :: Useqq = 1; '은이 데이터를 우리에게 제공하는데 도움이 될 것입니다. – ikegami
당신은 utf-8입니까? 아마 라틴어 -1 일 뿐이에요. –
나는'dir()'에서받은 것을 전달합니다. 귀하의 제안에 따라'dir()'에서받은 데이터와'mdtm() '에서 사용하는 파일 이름이 모두 UTF8로 인코딩되었음을 확인했습니다. – ChrisB