读取字节而非UTF-8的固定宽度文件

问题描述 投票:0回答:1

我有一个固定宽度的文件,我已根据起始字符和每个字段的长度映射了列。

它一直运行良好,直到我遇到

符号并注意到提供给我们的文件已配置,例如起始字符和长度以字节为单位定义。

这意味着,由于

符号是在三个字节上编码的,因此具有单个
的字段将显得短 2 个字符。

一个简单且不完整的解决方法是逐行解析文件,将

替换为
。这可能需要稍后处理更多字符(例如
£
)。它们不太可能有很多,但由于这个领域不受限制,所以很有可能有一天会出现不受欢迎的失败。

有更好的方法吗?

using (var readFile = new StreamReader(path))
{
    var line = readFile.ReadLine();
    while ((line = readFile.ReadLine()) != null)
    {
        line = line.Replace("€", "€  ");
        ///Mycode...
        var obj = new T();
        obj.AssignObjectValuesFromFixedWidthLine(line);
        ... 
        ///
    }
}
c# arrays .net-core utf-8 mapping
1个回答
0
投票

我使用我支持的平面文件解析工具也遇到了同样的问题。为了解决这个问题,我所做的就是读取 ISO-8859-1 中的文件,无论实际的代码页如何,执行解析,然后将其转换回实际的原始代码页,然后再将其写回到输出流。

© www.soinside.com 2019 - 2024. All rights reserved.