Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过字符编码读取StreamReader_C#_.net_Encoding - Fatal编程技术网

C# 通过字符编码读取StreamReader

C# 通过字符编码读取StreamReader,c#,.net,encoding,C#,.net,Encoding,我需要读取文本文件与ASCII编码字符的字符。如果我在文件中有撇号字符,那么我会得到问号。我检查了文件是否为ASCII格式,这样就不会有问题了 StreamReader reader = new StreamReader(this.path, Encoding.ASCII); while (!reader.EndOfStream) { char chr = (char) reader.Read(); // if i read character ’ then the conte

我需要读取文本文件与ASCII编码字符的字符。如果我在文件中有撇号字符,那么我会得到问号。我检查了文件是否为ASCII格式,这样就不会有问题了

StreamReader reader = new StreamReader(this.path, Encoding.ASCII);

while (!reader.EndOfStream)
{
    char chr = (char) reader.Read();
    // if i read character ’ then the content of chr is: 63 '?'
    // but i need aposthrope not questionmark

}

您的源必须以不同的编码格式保存。如果你想把问号63改成撇号39,你所要做的就是这样修改你的代码

StreamReader reader = new StreamReader(this.path, Encoding.ASCII);
int c = 0;
while (!reader.EndOfStream)
{
    c=reader.Read()
    char chr = c==63?(char)39:(char)c;
}
学习新知识:?::是三元运算符,是一个很好的简写形式

检查条件?如果结果为真:如果结果为假


这段代码运行良好。您的文件可能不在ASCIIU中。请使用十六进制编辑器来确保文件中的'29x 39@TaW问题解决了——那个字符实际上是不同的字符。我应该检查两次。如果你想保持简单,你可以随时手动更改它。