0
私は私が読んでい.NETのStreamReaderエンコードの行動
StreamWriter(fileName,false, Encoding.Unicode);
を使用してEncoding.Unicodeを使って、文字列をファイルに書いていますUnicodeエンコーディングの挙動を理解しようとすると、以下に出くわし、
ています意図的にASCIIを使用します。
ReadLineを使用して文字列を読むと、驚いたことに同じユニコード文字列が返されます。
文字列が含まれると予想しましたか?または元の文字列の長さの2倍の文字を使用します。
ここで何が起こっているか
コードスニペット
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を(ファイル名、エンコーディング、false)を呼び出した場合。 はそれは期待result.`に
おかげ
入力はすでに文字マップからコピーされたユニコードのアラビア文字です。私はそれが私が通過しているパラメータに起因することが分かった。ありがとう – HAN
[この回答を読んでください(http://stackoverflow.com/a/700221/2846483)。 Unicodeは実際にはエンコーディングではなく、ASCIIであることに注意してください。 – dymanoid
@dymanoid in .NET、 "Encoding.Unicode" _エンコード、つまり[UTF-16リトルエンディアン](https://msdn.microsoft.com/en-us/library/system.text.encoding.unicode( v = .110).aspx)。私はその命名に同意すると言っていません。 – CodeCaster