我必须编辑一个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,但我的输出仍然搞砸了。
全部谢谢
答案 0 :(得分:3)
您已将输入文件声明为ASCII,但显然不是。将它更改为iso-8859-1或CP-1252(Windows Latin-1),你可能会有更好的运气......
这并没有解决基本问题,即ASCII中没有相应的óãç,那么你打算用它们做什么呢?简单地扔掉它们?或者你应该确保你的输出使用更通用的编码,如UTF-8?
要做的最好的事情是从您的来源中找出用于此文件的编码,并询问您的文件的收件人输出可接受的内容。找出答案的唯一方法是ASK,因为表面上有各种类似的编码。
答案 1 :(得分:1)
在这里,有两个地方你可能会搞砸,
检查源文件编码(您可以尝试Notepad2,其中有一个显示编码的状态栏)并在从源文件中读取时使用该文件。
成功读取文件后,使用UTF-8写入以保留输出文件中的这些字符。
答案 2 :(得分:1)
据你所说:
您正在设法正确读取数据,也就是说,您已经对输入文件的编码做出了正确的假设(假设编码是一件好事)。这是因为您已声明可以将字符串写入控制台并与输入匹配。
查看时,输出文件数据不正确。
但是,既然您已正确读取数据,并且您正在使用的输出编码(Windows-1252)确实支持您所声明的字符(还有其他人吗?),即ó,ã和ç,那么就没有理由不能正确写入文件。
那么,您如何得出输出文件写错的结论呢?您正在使用的工具来查看输出假设某种编码吗?
答案 3 :(得分:0)
我认为关键在于编码。输入数据的文本编码是什么?
答案 4 :(得分:0)
如果您读取整个文件并在\ r \ n?
上拆分,该怎么办?