问题描述
尝试使用python脚本将文件FTP到大型机服务器,但在大型机数据集端获取特殊字符
from ftplib import FTP
host = "hostname"
user = "username"
password = "pass"
with FTP(host) as ftp:
ftp.login(user = user,passwd = pass)
print(ftp.getwelcome())
with open('test.txt','rb') as f:
ftp.storbinary('STOR ' + "'TestDataset'",f)
ftp.quit()
这是我用来将文件通过 FTP 传输到大型机服务器的代码,看起来像是编码问题。大型机使用EBCDIC,python默认编码为UTF-8或UTF-16,但无法解决,请帮忙。谢谢
这是我能够在大型机端看到的输出, text.txt 的内容是“你好”
解决方法
我不知道python,所以不能告诉你需要编码什么,但是:大型机FTP服务器有一个设置来告诉它“网络端”代码页,即你的服务器端UTF-8或UTF -16,以及大型机端代码页。
在从 Windows 到大型机的 FTP 会话中,我会发出
quote site sbdataconn=(UTF-8,IBM-037)
您可能想了解如何使用 python ftp 接口指定它。请注意,您可能不需要 quote
关键字,但可以直接以 site
关键字开头。
您还需要找到大型机上确切使用的 EBCDIC 代码页。在美国,它可能是 IBM-037 或 IBM-1047。在其他国家/地区,它也可能是任何国家/地区特定的 EBCDIC 代码页。