我使用Net :: FTP访问PVR(卫星接收器)并检索录制的视频文件。使用dir()
子例程获取所有文件的列表工作正常,但如果文件名包含非ASCII(UTF8)字符,则对mtdm()
和get()
的调用将失败。这是一个例子(包含德语“变音符号”):
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字符的文件也很有效。
有谁知道我怎么可能做这个工作?显然,我不能简单地避免使用文件名中的“变音符号”。
答案 0 :(得分:0)
谢谢ikegame和Slaven Rezic,你的建议帮助我解决了这个问题。
总结一下:这是Topfield SRP2100的FTP实现中的一个错误。问题不在于Perl或Net :: FTP相关。 RETR命令执行时,MDTM命令不接受非ASCII字符。我用网络嗅探器检查了我的代码和Net :: FTP正在做的一切。在FTP命令中发送的所有文件名都是100%正确的。
我通过解析dir()
输出中显示的日期而不是使用MDTM来处理非ASCII文件名来解决这个问题 - 这不是一个很好的解决方案,但它有效。