如何归档包含非法字符文件名的完整FTP服务器?
解决冰岛语特殊字符导致的FTP下载编码错误问题
遇到的Incomplete or invalid multibyte sequence encountered错误,核心是FTP服务器返回的冰岛语文件名(含ð、þ等特殊字符)编码与本地工具的编码解析不匹配,试试以下几种方案:
方案1:给wget强制指定编码参数
之前的--restrict-file-names=nocontrol仅禁用控制字符,未解决编码适配问题。添加编码参数并配合环境变量强制UTF-8解析:
LC_ALL=en_US.UTF-8 wget -m --remote-encoding=UTF-8 --local-encoding=UTF-8 <你的FTP地址>
--remote-encoding=UTF-8:告知wget远程服务器的文件名采用UTF-8编码--local-encoding=UTF-8:确保本地保存文件名时使用相同编码LC_ALL=en_US.UTF-8:强制wget在UTF-8环境下运行,规避系统默认编码干扰
方案2:改用curl递归下载
curl对多字节字符的兼容性通常更优,用以下命令递归下载整个FTP目录:
curl --ftp-pasv --user <用户名:密码> --ftp-method multicwd -r -l -O --create-dirs <你的FTP地址>
--ftp-pasv:启用被动模式,避免防火墙/网络限制导致的连接失败--ftp-method multicwd:优化目录遍历效率,适配带特殊字符的目录名--create-dirs:自动创建与FTP服务器一致的本地目录结构
方案3:检查并调整本地系统编码
如果本地系统默认编码不是UTF-8,会导致工具无法正确解析特殊字符,先执行以下命令切换编码:
export LC_CTYPE=en_US.UTF-8 export LC_ALL=en_US.UTF-8
之后再运行wget或curl的下载命令即可。
内容的提问来源于stack exchange,提问作者H. Wilde
相关产品推荐
相关产品推荐

