C# 在c语言中,从文本文件中一次读取一个字符的数字、字母和特殊字符#

C# 在c语言中,从文本文件中一次读取一个字符的数字、字母和特殊字符#,c#,file-io,special-characters,C#,File Io,Special Characters,除了不读特殊字符外,一切正常。 我的文件“a.text”包含以下内容: “anbocpdqerfsgthuivjwkxlymznaobpcqdrestftguhvjxkylzmanbocpdqerfstgxlymznaobpcqdrestftguhvjxkylzm05162738495061728394;(,).[?]{'}/\!\124;@u35;+$-%*=&:,()?[]'{“}~/!\@|#$+%-^*&=” 使用系统; 使用System.IO; 使用System.Collections

除了不读特殊字符外,一切正常。 我的文件“a.text”包含以下内容:

“anbocpdqerfsgthuivjwkxlymznaobpcqdrestftguhvjxkylzmanbocpdqerfstgxlymznaobpcqdrestftguhvjxkylzm05162738495061728394;(,).[?]
{'}/\!\124;@u35;+$-%*=&:,()?[
]'{“}~/!\@|#$+%-^*&=”

使用系统;
使用System.IO;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Text.RegularExpressions;
命名空间控制台应用程序12
{
类测试员
{              
静态void Main(字符串[]参数)
{             
FileStream fs=newfilestream(@“d:\a.txt”,FileMode.Open,FileAccess.Read);
字符串s=“aDFn3和5(09@Df0!/";
字符串c1=“”;
字符串c2=“”;
字符串c3=“”;
字节[]text2=新字节[1];
字节[]text1;
int i,j,k=0;
while(k0)
{
读取(文本2,0,1);
c2=System.Text.Encoding.Default.GetString(text2);
如果(c1==c2)
{
控制台写入(c2);
打破
}
搜索(j,SeekOrigin.Current);
我--;
}
text1=新字节[j];
fs.Read(text1,0,j);
c3=System.Text.Encoding.Default.GetString(text1);
控制台写入(c3);
Console.WriteLine();
k++;
}
}        
}
}
我在我的输出中得到了空白,我试图读取特殊字符并进行比较。 我猜输入c2字符串的编码是个问题,但我尝试了所有编码类型,UTF8、UNICODE、UTF7、UTF32,只是想看看有什么帮助。

请帮我解决这个问题,谢谢大家的回复。

我真的不明白你想要达到什么目的,或者为什么你想一次读一个字符

如果文件不是太大,我会读取整个文件,然后处理字符串

比如:

private static void parseFile(string fileName)
{
    string content = File.ReadAllText(fileName, Encoding.UTF8);
    foreach (char character in content)
    {
        if (character >= 'A' && character <= 'Z')
        {
            // handle A-Z
        }
        else if (character >= 'a' && character <= 'z')
        {
            // handle a-z
        }
        else if (character >= '0' && character <= '9')
        {
            // handle 0-9
        }
        else
        {
            // handle everything else
        }
    }
}
private静态无效解析文件(字符串文件名)
{
字符串内容=File.ReadAllText(文件名,Encoding.UTF8);
foreach(内容中的字符)
{

如果(character>='A'&&character='A'&&character='0'&&character我很抱歉我的错误,这是我文件的内容:"A000000B0000100D000110E001000F001010G0001100H001110I010000J010K010100L010110M011000N000001O000011P000101Q000111R001S001011T001101101U001111V0100001W010011X010101Y010111Z011001A10000B1000100D100110E101000F101010G1010100H101110I110000J1010100L10110110M11100000N1000110011P100101Q100101Q100111Q100111R101101010101V101101101010101V1011011010101V1011010W1011011010101W101101001W101101101001W101001W101101101101001W101101101101101001W101001Y110111Z1100101110110000111101100012111011001031110110011100114111011101005110110101611101110110711101110111811101111000911101111001,对于特殊字符,我同样给出了二进制数。我得到一个字符串作为字符串“s”的输入,然后对于字符串中的每个字符,我用二进制数替换一个数字、一个字母表或特殊字符并将其存储在第二个字符串中。我正在尝试用二进制数加密数据。稍后进行解密时,我将使用类似的文件将二进制数替换为字符。我的代码替换除特殊字符以外的所有字符,它根本不读取它们,跳过循环并读取字符串中的下一个字符,从而为输出中特殊字符的二进制数。是的,但是将文件作为一个整体读取到一个字符串会有所帮助,因为比较字符串值时不会出现编码问题。很高兴能提供任何帮助。仍然不能完全理解您所做的事,但这可能也会对您有所帮助:将字符解释为字节:
byte b=(byte)c、 
,获取字节中位的字符串表示形式:
string bStr=Convert.ToString(b,2);
,从字符串中获取字节:
byte b2=Convert.ToByte(bStr,2);
并再次将其解释为char:
char c2=(char)b2;
但是,再次提醒您,在使用任何形状或形式的编码时,都会遇到许多陷阱!
private static void parseFile(string fileName)
{
    string content = File.ReadAllText(fileName, Encoding.UTF8);
    foreach (char character in content)
    {
        if (character >= 'A' && character <= 'Z')
        {
            // handle A-Z
        }
        else if (character >= 'a' && character <= 'z')
        {
            // handle a-z
        }
        else if (character >= '0' && character <= '9')
        {
            // handle 0-9
        }
        else
        {
            // handle everything else
        }
    }
}