.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。
我试图了解 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。