c#无法在Unisys大型机Windows共享上创建EBCDIC文件
我正在尝试将asp.net站点上用户生成的数据上载到Unisys大型机。我的客户决定让我直接将数据加载到Unisys大型机windows共享上,而不是使用FTP上传文件。FTP通常在ASCII和EBCDIC之间进行转换 问题是大型机将文件视为ASCII,而不管我是否将文件内容编码为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
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。