需要帮助弄清楚如何处理下面的情况。FileHelpers库转义分隔符时读取流
我们使用FileHelpers库来解析CSV文件.NET应用程序。 我们不使用物理文件,而是使用SQL服务器数据库将CSV文件存储在VARBINARY字段中。我们需要做的是使用流读取器读取二进制内容,并使用适当的多记录引擎解析它。
我们的CSV文件使用分号(;)作为分隔符,但文件记录可以包含转义分离器,其中转义字符是感叹号(!)。 解析文件时,必须忽略转义的分隔符字符。 这意味着继记录必须被解析以同样的方式:
您好;世界;富//没有逃脱分隔这里
你好;;世界;富!;! // 2个逃出这里
分离器的前面的例子中两个记录是有效的,必须产生一个对象,其属性是“你好”,“世界”和“富”。
使用给前一个问题在此同一站点的答案(FileHelper escape delimiter) 我想订阅MultiRecordEngine类的公共事件BeforeReadRecord,使用事件处理程序,只需更换出现的所有“!”与空串。
使用MultiRecordEngine.ReadString方法时可以正常工作:事件BeforeReadRecord在每次读取记录时触发,事件处理程序按预期方式调用并且转义的分隔符字符被空字符串替换。
不幸的是,使用MultiRecordEngine从流中读取时,事件BeforeReadRecord完全不和事件处理程序代码发射从不执行。 我想从流中读取时没有办法利用BeforeReadRecord事件。
根据FileHelpers库单证(http://filehelpers.sourceforge.net/FileHelpers.MultiRecordEngineMembers.html)似乎没有在这种情况下使用合适的事件。
从流中读取数据时有谁知道一种方法来处理逃脱分离?
感谢您的帮助。
Enrico。
可能的解决方案是实现自定义编码。参考[这个Q/A](http://stackoverflow.com/questions/25118364/is-there-a-such-a-thing-like-user-defined-encoding-fallback) – Graffito