私のプロジェクトでは; データベースにクエリを実行し、結果セットを使用して固定幅のフラット ファイルを生成する必要があります。この質問に基づいたソリューションを使用しています。レコードの 99% についてはすべて問題ありませんが、問題を引き起こしている状況が 1 つあります。
® や ™ などの「特殊文字」の場合。テキスト ファイルに書き込むときに、列の長さが歪んでしまいます。結果を確認すると、®記号の場合は®、™の場合はâ¢となります。
後で検証/サニテーション プロセスで取り上げられるため、文字化けした文字を最終結果に残しておきたいと思います (今のところ)。(つまり、「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 を使用して結果を検証しています。