CSV文件已读取。特殊字符问题

时间:2009-07-27 17:34:40

标签: c# .net csv character-encoding streamreader

我必须编辑一个csv文件,问题是我的特殊字符如ã被搞砸了。

Heres是我代码的一部分:

static void ReadFromFile(){

        StreamReader SR = new StreamReader("c:\\Users\\Levy\\Documents\\Vale\\Base\\Desknote.csv", Encoding.Default);

        StreamWriter SW = new StreamWriter("c:\\Users\\Levy\\Documents\\Vale\\Base\\Desknote_Ed.csv", true, System.Text.Encoding.GetEncoding("Windows-1252"));

        string S;
        char C='a';
        int i=0;
        S=SR.ReadLine();
        SW.Write(S);

}

UPDATING:

我能够通过在Stramreader对象上使用Encoding.Default来读取字符。 (我可以在控制台上显示它们)

我在编写器上尝试使用ISO 8859-1和CP-1252,但我的输出仍然搞砸了。

全部谢谢

5 个答案:

答案 0 :(得分:3)

您已将输入文件声明为ASCII,但显然不是。将它更改为iso-8859-1或CP-1252(Windows Latin-1),你可能会有更好的运气......

这并没有解决基本问题,即ASCII中没有相应的óãç,那么你打算用它们做什么呢?简单地扔掉它们?或者你应该确保你的输出使用更通用的编码,如UTF-8?

要做的最好的事情是从您的来源中找出用于此文件的编码,并询问您的文件的收件人输出可接受的内容。找出答案的唯一方法是ASK,因为表面上有各种类似的编码。

答案 1 :(得分:1)

在这里,有两个地方你可能会搞砸,

  1. 阅读时(内在地固定下一步)
  2. 写作时
  3. 检查源文件编码(您可以尝试Notepad2,其中有一个显示编码的状态栏)并在从源文件中读取时使用该文件。

    成功读取文件后,使用UTF-8写入以保留输出文件中的这些字符。

答案 2 :(得分:1)

据你所说:

  1. 您正在设法正确读取数据,也就是说,您已经对输入文件的编码做出了正确的假设(假设编码是一件好事)。这是因为您已声明可以将字符串写入控制台并与输入匹配。

  2. 查看时,输出文件数据不正确。

  3. 但是,既然您已正确读取数据,并且您正在使用的输出编码(Windows-1252)确实支持您所声明的字符(还有其他人吗?),即óãç,那么就没有理由不能正确写入文件。

    那么,您如何得出输出文件写错的结论呢?您正在使用的工具来查看输出假设某种编码吗?

答案 3 :(得分:0)

我认为关键在于编码。输入数据的文本编码是什么?

答案 4 :(得分:0)

如果您读取整个文件并在\ r \ n?

上拆分,该怎么办?