我使用Net :: FTP訪問PVR(衛星接收器)並檢索錄製的視頻文件。使用dir()
子例程獲得所有文件的列表可以正常工作,但是如果文件名包含非ASCII(UTF8)字符,則對這些文件的調用mtdm()
和get()
將失敗。下面是一個例子(包含德國的「變音」):只有包含ASCII字符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
文件名工作得很好。通過其他FTP軟件訪問非ASCII字符的文件也可以。
有沒有人有一個想法,我可以做這個工作?顯然,我不能簡單地避免文件名中的「變音符號」。
大多數操作系統和Perl認爲文件名是任意字節,所以問題是:你傳遞給Net :: FTP的字節是什麼?什麼字節形成相關係統上的文件名?具有'local $ Data :: Dumper :: Useqq = 1;'的Data :: Dumper將有助於向我們提供這些數據。 – ikegami
你確定它是utf-8嗎?也許這只是拉丁-1。 –
我通過從'dir()'接收到的內容。根據你的建議,我已經檢查過,從dir()接收的數據和我用mdtm()使用的文件名都是UTF8編碼的。 – ChrisB