C# 用c语言编写的文本文件中的特殊字符#

C# 用c语言编写的文本文件中的特殊字符#,c#,text,C#,Text,我正在创建此文件: StreamWriter swClifor = new StreamWriter("test.txt",true, Encoding.ASCII); string cString = "5° ENNIO" // It comes from a Postgresql database 写cString:with: swClifor.WriteLine(cString); 和关闭流程: swClifor.Close(); 当我用Notepad++(UTF-8)读取文件时,我

我正在创建此文件:

StreamWriter swClifor = new StreamWriter("test.txt",true, Encoding.ASCII);
string cString = "5° ENNIO" // It comes from a Postgresql database
写cString:with:

swClifor.WriteLine(cString);
和关闭流程:

swClifor.Close();
当我用Notepad++(UTF-8)读取文件时,我看到:5°ENNIO 当我用记事本++(ANSI)读取文件时,我看到5°ENNIO。 当文件目标程序读取文本时,它会看到5°ENNIO并出错

这是一个完整的问题。

这对我来说很有效:

using (StreamWriter swClifor = new StreamWriter("test.txt", true, Encoding.Unicode))
{
     string cString = "5° ENNIO";
     swClifor.WriteLine(cString);
}

度数是ASCII字符吗?Encoding.ASCII不包含特殊字符,因此它们永远不会保存。请尝试StreamWriter swClifor=new StreamWriter(“test.txt”,true,Encoding.UTF8);不工作…..您如何读取文件?@john试图说的是,°不是
编码.ASCII
,您必须指定允许该字符的
编码<代码>编码。UTF8将起作用,为什么你认为它“不起作用”不起作用,如果你用UTF-8读取文件,看不到空间字符,但是如果你切换到ANSI,请参阅5°ENNIO。(记事本++)Infoservice,上面的符号在哪里?对于读取数据时使用的编码类型不表示的两字节字符,您预计会发生什么情况?ASCII愚蠢的问题,得到一个愚蠢的ANSI毕竟。@Infoservice嗯,是的,它有。为什么您要读取UTF-8中的Unicode编码页面并期望它正确显示?我用NotePad++打开了输出,它显示的很好。@john,字符串的来源是一个代码页为Win1252的Postgresql数据库。在数据库中,字符串显示为5th ENNIO,在数据表中显示为5th ENNIO,当我将其写入文件时,在UTF-8中读取,显示为5th ENNIO,在ANSI中读取,显示为5th ENNIO。所以我认为问题在于它的现状written@PhilNDeBlanc,问题是我写了这个文件,但另一个程序读取了它,结果出错了。