尝试使用python脚本将文件FTP到大型机服务器,但在大型机数据集端获取特殊字符

问题描述

尝试使用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 的内容是“你好”

enter image description here

解决方法

我不知道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 代码页。