gpt4 book ai didi

c#、Excel + csv : how to get the correct encoding?

转载 作者:可可西里 更新时间:2023-11-01 08:03:37 25 4
gpt4 key购买 nike

我已经尝试了很长一段时间,但无法弄清楚。我正在尝试通过 *.csv 文件将数据导出到 Excel。到目前为止效果很好,但是在 Excel 中打开文件时我遇到了一些编码问题。

(左边是原始字符串,右边是EXCEL结果):

Messwert(µm / m) ==> Messwert(µm / m)

Dümme Mässöng ==> Dümme Mässöng

Notepad++ 告诉我文件编码为“ANSI as UTF8”(WTF?)

因此,这里是我尝试获得有效结果的不同方法:明显的实现:

tWriter.Write(";Messwert(µm /m)");

更复杂的(可能尝试了十几种或更多的编码组合:)

tWriter.Write(Encoding.Default.GetString(Encoding.Unicode.GetBytes(";Messwert(µm /m)")));
tWriter.Write(Encoding.ASCII.GetString(Encoding.Unicode.GetBytes(";Messwert(µm /m)")));

等等

创建数据的方法的完整源代码:

    MemoryStream tStream = new MemoryStream();
StreamWriter tWriter = new StreamWriter(tStream);
tWriter.Write("\uFEFF");

tWriter.WriteLine(string.Format("{0}", aMeasurement.Name));
tWriter.WriteLine(aMeasurement.Comment);
tWriter.WriteLine();
tWriter.WriteLine("Zeit in Minuten;Messwert(µm / m)");

TimeSpan tSpan;
foreach (IMeasuringPoint tPoint in aMeasurement)
{
tSpan = new TimeSpan(tPoint.Time - aMeasurement[0].Time);
tWriter.WriteLine(string.Format("{0};{1};", (int)tSpan.TotalMinutes, getMPString(tPoint)));
}

tWriter.Flush();
return tStream;

生成的 CSV 文件:

Dümme Mössäng
Testmessung die erste

Zeit in Minuten;Messwert(µm / m)
0;-703;
0;-381;
1;1039;
1;1045;
2;1457;
2;1045;

最佳答案

这对我来说非常有效:

private const int WIN_1252_CP = 1252; // Windows ANSI codepage 1252

this._writer = new StreamWriter(fileName, false, Encoding.GetEncoding(WIN_1252_CP));

CSV encoding issues (Microsoft Excel)

关于c#、Excel + csv : how to get the correct encoding?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3346529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com