文件名中的Perl Net :: FTP和非ASCII(UTF8)字符

时间:2013-11-24 17:42:10

标签: perl ftp perl-module

我使用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字符的文件也很有效。

有谁知道我怎么可能做这个工作?显然,我不能简单地避免使用文件名中的“变音符号”。

1 个答案:

答案 0 :(得分:0)

谢谢ikegame和Slaven Rezic,你的建议帮助我解决了这个问题。

总结一下:这是Topfield SRP2100的FTP实现中的一个错误。问题不在于Perl或Net :: FTP相关。 RETR命令执行时,MDTM命令不接受非ASCII字符。我用网络嗅探器检查了我的代码和Net :: FTP正在做的一切。在FTP命令中发送的所有文件名都是100%正确的。

我通过解析dir()输出中显示的日期而不是使用MDTM来处理非ASCII文件名来解决这个问题 - 这不是一个很好的解决方案,但它有效。

相关问题