我正在创建一个应用程序来扫描和合并CSV文件。将数据写入新文件时出现问题。其中一个字段具有ö字符,直到我将其写入新文件为止。然后,它变为“实际”值:Ã而不是“预期”值:ö
我怀疑UTF8编码不是最好的使用方法,但尚未找到更好的工作方法。任何帮助,将不胜感激!
byte[] nl = new UTF8Encoding(true).GetBytes("\n");
using (FileStream file = File.Create(filepath))
{
string text;
byte[] info;
for (int r = 0; r < data.Count; r++)
{
int c = 0;
for (; c < data[r].Count - 1; c++)
{
text = data[r][c] + @",";
text = text.Replace("\n", @"");
text = text.Replace(@"☼", @"""");
info = new UTF8Encoding(true).GetBytes(text);
file.Write(info, 0, text.Length);
}
text = data[r][c];
info = new UTF8Encoding(true).GetBytes(text);
file.Write(info, 0, text.Length);
file.Write(nl, 0, nl.Length);
}
}
我可能会记错了,可能应该在评论中加进去,但我还不能发表评论。文本编辑器会将二进制数据解码为某种编码。您可以在十六进制编辑器中检查实际的二进制数据。您可以验证要写入文件的二进制数据。Notepad ++有一个可以使用的十六进制编辑器插件。
将字节写入文件时,BinaryWriter更易于使用。您还可以设置BinaryWriter的编码。您需要将此设置为UTF-8。
编辑
我忘了提。当您写出字节时,您也希望以字节为单位读入。使用BinaryReader并将编码设置为UTF-8。
读取使用中的字节后,请使用Encoding.UTF8.GetString()将字节转换为字符串。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句