在我的项目中;我需要查询我们的数据库,然后使用结果集生成一个固定宽度的平面文件。我正在使用基于this问题的解决方案。对于99%的记录来说,一切都很好,但是我遇到了导致问题的一种情况:
如果是“特殊字符”,如®或™;当写入文本文件时,它最终会扭曲列的长度。当我检查结果时,如果是®符号,我会得到®,而如果是™,我会得到â€。
我想在最终结果(现在)中保留乱码,因为它会在验证/卫生过程中稍后被提取。 (即在大小如'5½'的情况下;我不想简单地放弃½因此它看起来像'5')
有没有办法获得这些特殊字符序列化的实际长度,以便我可以考虑到这一点?
修改 这是编写文本的代码:
using (var fileStream = new StreamWriter(fileName, false))
{
foreach (
var fileRecord in recordTypes.Select(record => record.RetrieveForImport(startDate, endDate)).SelectMany(records => records))
{
try
{
fileStream.WriteLine(fileRecord.Serialize());
}
catch (MySerializationException ex)
{
LogSerializationError(fileRecord, ex.Message);
}
}
}
我之后使用TextPad来验证结果。