0
내가 유니 코드 인코딩의 행동을 이해하려고 노력하고 다음을 가로 질러 온하고,.NET에서는 StreamReader 인코딩 동작
내가 읽고있다
StreamWriter(fileName,false, Encoding.Unicode);
를 사용하여 Encoding.Unicode를 사용하여 파일에 문자열을 쓰고 있어요 동일한 파일에서 가져 오지만 의도적으로 ASCII를 사용하십시오.
StreamReader(fileName,false, Encoding.ASCII);
나는이 같은 유니 코드 문자열을 돌려주고있다 놀랍게도에서는 ReadLine를 사용하여 문자열을 읽을 때.
문자열에 포함 할 것으로 예상 했습니까? 또는 원래 문자열 길이의 두 배가되는 다른 문자.
여기 무슨 일입니까?
코드 조각
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
내가 (파일 이름, 인코딩 false)를 위해 StreamReader의 = 새에서는 StreamReader 호출하는 경우
; 다음은 예상 result.`에게감사
입력이 이미 문자표에서 복사 된 유니 코드 문자입니다. 나는 그것이 통과하고있는 매개 변수 때문인 것으로 나타났습니다. 감사합니다 – HAN
[이 답변을 읽어 보시기 바랍니다 (http://stackoverflow.com/a/700221/2846483). 'Unicode'는 실제로는 인코딩이 아니고'ASCII'는 사실입니다. – dymanoid
@dymanoid in .NET, "Encoding.Unicode"_ 인코딩, 즉 [UTF-16 little-endian] (https://msdn.microsoft.com/en-us/library/system.text.encoding.unicode (v = .110) .aspx). 나는 그 명명법에 동의하지 않는다. – CodeCaster