c#无法在Unisys大型机Windows共享上创建EBCDIC文件

c#无法在Unisys大型机Windows共享上创建EBCDIC文件,c#,ebcdic,C#,Ebcdic,我正在尝试将asp.net站点上用户生成的数据上载到Unisys大型机。我的客户决定让我直接将数据加载到Unisys大型机windows共享上,而不是使用FTP上传文件。FTP通常在ASCII和EBCDIC之间进行转换 问题是大型机将文件视为ASCII,而不管我是否将文件内容编码为EBCDIC 测试代码如下: string dataToWrite = "ACHR0000000000575TEST EBCDICPAYEE 8899007500038159 0

我正在尝试将asp.net站点上用户生成的数据上载到Unisys大型机。我的客户决定让我直接将数据加载到Unisys大型机windows共享上,而不是使用FTP上传文件。FTP通常在ASCII和EBCDIC之间进行转换

问题是大型机将文件视为ASCII,而不管我是否将文件内容编码为EBCDIC

测试代码如下:

        string dataToWrite = "ACHR0000000000575TEST EBCDICPAYEE             8899007500038159 0000001000160330 ".ToUpper();
        Encoding ebcdic = Encoding.GetEncoding("IBM037");

        List<byte> bytes = new List<byte>();
        bytes.AddRange(Encoding.Convert(Encoding.ASCII, ebcdic, Encoding.ASCII.GetBytes(dataToWrite)));


        using (var unc = new UNCAccessWithCredentials())
        {
            // get access to the reconciliation file share using credentials in the config
            string path = @"\\xxx\RECONDEV";
            unc.NetUseWithCredentials(path, "XXX","", "XXX");
            string fileName = Path.Combine(path, "ACH");
            using (var binWriter = new BinaryWriter(File.OpenWrite(fileName)))
            {
                binWriter.Write(bytes.ToArray());
                binWriter.Flush();
                binWriter.Close();
            }
        }
string dataToWrite=“achr0000000000575测试EBCDIC收款人889900750038159000000 1000160330”。ToUpper();

Encoding ebcdic=Encoding.GetEncoding(“IBM037”); 列表字节=新列表(); bytes.AddRange(Encoding.Convert(Encoding.ASCII、ebcdic、Encoding.ASCII.GetBytes(dataToWrite)); 使用(var unc=new UNCAccessWithCredentials()) { //使用配置文件中的凭据访问对帐文件共享 字符串路径=@“\\xxx\RECONDEV”; unc.NetUseWithCredentials(路径“XXX”、“XXX”); 字符串文件名=Path.Combine(路径,“ACH”); 使用(var binWriter=newbinarywriter(File.OpenWrite(fileName))) { binWriter.Write(bytes.ToArray()); binWriter.Flush(); binWriter.Close(); } }
问题
1) 我是否应该将文件创建为ASCII,然后让大型机作业调用一个实用程序来转换文件EBCDIC?如果是,该实用程序的名称是什么?大型机操作系统不知道有一个

2) 有没有办法在.net中实际创建EBCDIC文件?EBCDIC编码正在工作,但我相信文件类型是不同的,我还没有找到任何东西

事实上,我已经20年没有用大型机做过任何事情了,所以我已经超出了我的能力范围

提前谢谢。
Chris

仅供参考,一位顾问建议我们使用一个名为MCPCopy的实用程序,在将文件复制到大型机共享时,将文件从ASCII流复制并转换为EBCDIC。该实用程序可以作为NXExtend的一部分安装。ASP.Net站点使用的命令行是:

c:\Windows\MCPCopy.exe{SourceFile}{DestinationFile}/Y/Z:SR/D:80


希望这有帮助

仅供参考,一位顾问建议我们在将文件复制到大型机共享时,使用名为MCPCopy的实用程序将文件从ASCII流复制并转换为EBCDIC。该实用程序可以作为NXExtend的一部分安装。ASP.Net站点使用的命令行是:

c:\Windows\MCPCopy.exe{SourceFile}{DestinationFile}/Y/Z:SR/D:80


希望这对bytes.AddRange(Encoding.Convert(Encoding.ASCII,ebcdic,…由于ebcdic不是System.Text.Encoding可识别的枚举值,您如何指定ebcdic?Encoding ebcdic=Encoding.GetEncoding(“IBM037”);不知道此链接是否对您有用?谢谢@auburg。我从Jon Skeets的代码开始,但它有点过时,.net编码采用EBDDIC编码。仅供任何遇到此问题的人参考……unisys大型机顾问建议我们使用一个名为MCPCopy的实用程序将文件从ascii流移动并转换为EB大型机共享上的CDIC。在bytes.AddRange(Encoding.Convert(Encoding.ASCII,ebcdic,…)行中,由于ebcdic不是System.Text.Encoding的可识别枚举值,您如何指定它?Encoding ebcdic=Encoding.GetEncoding(“IBM037”);不知道此链接是否对您有用?谢谢@auburg。我从Jon Skeets的代码开始,但它有点过时,.net编码采用EBDDIC编码。仅供任何遇到此问题的人参考……unisys大型机顾问建议我们使用一个名为MCPCopy的实用程序将文件从ascii流移动并转换为EB大型机共享上的CDIC。