.NET StreamReader 编码行为

.NET StreamReader encoding behaviour

我试图了解 unicode 编码行为并遇到以下情况,

我正在使用 Encoding.Unicode 使用

将字符串写入文件
StreamWriter(fileName,false, Encoding.Unicode);

我正在读取同一个文件,但有意使用 ASCII。

 StreamReader(fileName,false, Encoding.ASCII);

令我惊讶的是,当我使用 ReadLine 读取字符串时,它返回相同的 unicode 字符串。

我希望字符串包含 ?或其他长度为原始字符串两倍的字符。

这里发生了什么?

代码片段

string test= "سشصضطظع";//some random arabic set
StreamWriter s = new StreamWriter(fileName,false, Encoding.UTF8);
s.Write(input);
s.Flush();
s.Close();
StreamReader s = new StreamReader(fileName, encoding);
string ss  = s.ReadLine();
s.Close();
//In string ss I expect to be a ascii with Double the length of test

如果我调用 StreamReader s = new StreamReader(fileName, encoding, false); 然后它给出了预期的结果。`

谢谢

创建 StreamReader 对象时应将参数 detectEncodingFromByteOrderMarks 设置为 false。