Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 包含特殊字符的宇宙记录倾斜输出_C#_.net_Universe_Unidata - Fatal编程技术网

C# 包含特殊字符的宇宙记录倾斜输出

C# 包含特殊字符的宇宙记录倾斜输出,c#,.net,universe,unidata,C#,.net,Universe,Unidata,我正在从宇宙中的一个文件中读取数据,其中一些记录包含导致换行的特殊字符。有办法去掉这些吗?有些是ASCII 255,但也有一些是其他的。我对宇宙还很陌生。我正在使用C#和U2.NET工具包。这是我的密码: U2Connection con = GetConnection(); UniSession us1 = con.UniSession; UniSelectList s1 = us1.CreateUniSelectList(0); UniFile f1 = us1.CreateUniFile(

我正在从宇宙中的一个文件中读取数据,其中一些记录包含导致换行的特殊字符。有办法去掉这些吗?有些是ASCII 255,但也有一些是其他的。我对宇宙还很陌生。我正在使用C#和U2.NET工具包。这是我的密码:

U2Connection con = GetConnection();
UniSession us1 = con.UniSession;
UniSelectList s1 = us1.CreateUniSelectList(0);
UniFile f1 = us1.CreateUniFile("CM");
s1.Select(f1);

bool lLastRecord = s1.LastRecordRead;
List<string> lRecIdList = new List<string>();

while (!lLastRecord)
{
    string sRecID = s1.Next();

    if (!lRecIdList.Contains(sRecID))
    {
            lRecIdList.Add(sRecID);
    }
    lLastRecord = s1.LastRecordRead;
}

UniDataSet uSet = f1.ReadRecords(lRecIdList.ToArray());

int count = 1;

foreach (UniRecord item in uSet)
{
    try
    {
        Console.WriteLine(count + " - " + item.RecordID + " - " + item.Record);
        count++;
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex);
        count++;
    }
}

con.Close();
但是,如果数据中有一个特殊字符,比如在第一条记录的字段3中,它看起来是这样的:

1 - 01*1234 - field1þfield2þfield3þfield4þfield5
2 - 01*5678 - field1þfield2þfield3þfield4þfield5
1 - 01*1234 - field1þfield2þfield3
2 - 01*5678 - field4þfield5
…然后第三条记录ID将包含第二条记录的数据

任何帮助都将不胜感激


目前,我正在通过让某人直接进入并编辑数据来解决这个问题,但是有90000条记录,并且每500条记录中大约有一条错误。

您正在尝试将数据展平为不一定适合的电子表格格式。您可能会看到以下情况之一

  • ASCII 255=项目标记。在文件中一条记录结束另一条记录开始的地方进行定界
  • ASCII 254=字段标记。将记录分隔为多个字段。论文可以看作是一个专栏
  • ASCII 253=值标记。在一列中分隔多个值
  • ASCII 252=子值标记。在值中分隔子值
  • ASCII 251=文本标记。更进一步,你的大脑爆炸了吗
我敢打赌你看到的是一个价值标记。Pick-type数据库的工作原理是将数据集的整个关系放在单个记录中。在销售订单示例中,在面向表的世界中,您将有一个表头表和一个明细表。在宇宙中,您只有一个文件

假设客户888于2014年2月28日(内部日期为16861)下的订单号10002,数量为3件小部件1234和5件小部件4321。看起来像这样@IM是一个项目标记@FM是一个字段标记,@VM是一个值标记

@IM10002@FM8888@FM16861@FM1234@VM4321@FM3@VM5
或者更干净。字段0是记录ID

0 - 10002
1 - 8888
2 - 16861
3 - 1234@VM4321
4 - 3@VM5
TL;DR如果您只需要展平,我将替换char(253)和char(252)不同的字符。通常,当您在Universe editor中看到一个特殊字符时,它会显示为^VM和~SVM


希望这是有帮助的

除非数据是用UTF8编码的,否则在数据流中有字符255是非常罕见的。您是否看过UniVerse控制台屏幕(TCL)中的数据是什么样子的?DBA告诉我,一些数据是从另一个源导入的,该源包含这些特殊字符。所以,垃圾在。。把垃圾扔出去。。数据在控制台级别看起来很好(使用Accuterm)。特殊字符不会在实际应用程序中显示,但DBA可以使用他拥有的任何工具看到它们。