0
我想了解Unicode編碼的行爲和整個下面就來,.NET StreamReader的編碼行爲
使用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 =新的StreamReader(文件名,編碼,假); 那麼它給人的預期result.`
感謝
輸入已經是從字符映射覆制的Unicode字符。我發現這是由於我傳遞的參數。謝謝 – HAN
請閱讀[這個答案](http://stackoverflow.com/a/700221/2846483)。你會注意到,'ASCII'實際上不是編碼。 – dymanoid
.NET中的@dymanoid,「Encoding.Unicode」_is_是一種編碼,即[UTF-16 little-endian](https://msdn.microsoft.com/en-us/library/system.text.encoding.unicode( v = vs.110)的.aspx)。不是說我同意命名。 – CodeCaster