我正在尝试编写一个函数,该函数接收 DataTable 并将其中的数据写入 csv 文件,该函数可以工作,但我希望文件内容以从右到左(RTL)的方式显示..
我尝试添加文化信息,utf8,但它不起作用,而且我没有找到任何支持,我该怎么做?
这是我的代码
private static async Task SaveCsvFile(DataTable dt, FileInfo file)
{
var cultureInfo = new CultureInfo("he-IL");
using var writer = new StreamWriter(file.FullName, false, Encoding.UTF8);
using var csv = new CsvHelper.CsvWriter(writer, cultureInfo);
foreach (DataColumn column in dt.Columns)
{
csv.WriteField(column.ColumnName);
}
await csv.NextRecordAsync();
foreach (DataRow row in dt.Rows)
{
for (int i = 0; i < dt.Columns.Count; i++)
{
csv.WriteField(row[i]);
}
await csv.NextRecordAsync();
}
}
我不认为这是一个
CsvHelper
问题,而是一个显示问题。 CsvHelper
使用 CultureInfo
来确定要使用的文化分隔符以及如何显示日期和数字等内容。 然后,它使用 StreamWriter
实际写入文件,默认为 UTF8
。 该文件不理解“从左到右”与“从右到左”。 它只理解文件的开头、一些文本和文件的结尾。
当我查看“从右到左写入 txt 文件”的答案时,我确实注意到我的 C# 编辑器中显示的希伯来语与输出文件在文本编辑器中显示的内容相反。
string hebrew = @"מספרים רצים מימין לשמאל ?";
var file = new System.IO.StreamWriter("c:\\test_heb.txt");
file.WriteLine(hebrew);
file.Close();
希伯来语文本会根据我用来查看文本的编辑器进行翻转。