문제

아래 그림은 모든 것을 설명합니다.

Alt Text http://img133.imageshack.us/img133/4206/accentar9.png

변수 텍스트는에서 나옵니다 File.ReadAllText(path); 그리고 'É è ... 표시되지 않습니다. UnitTest를 실행하면 모두 괜찮습니다! 나는 그들을 본다 ... 왜?

도움이 되었습니까?

해결책 3

왜 Nunit에서 작동하는지 모르겠지만 Notepad ++로 파일을 열고 형식으로 ANSI를 볼 수 있습니다. 이제 UTF-8로 변환했는데 작동합니다.

나는 왜 그것이 콘솔에 있지 않고 Nunit과 함께 일하고 있는지 궁금합니다. 그러나 적어도 지금은 작동합니다.

업데이트질문이 여전히 좋기 때문에 왜 질문에 투표 하고이 답변에 투표를했는지 알지 못합니다. 왜 콘솔에서 ANSI 파일을 읽을 수 없지만 NUNIT에서는 할 수 있습니까?

다른 팁

.NET 클래스 (System.IO.StreamReader 그리고 좋아요)는 기본 인코딩으로 UTF-8을 취합니다. 다른 인코딩을 읽으려면이를 적절한 생성자 과부하로 명시 적으로 전달해야합니다.

또한 "ANSI"라는 단일 인코딩은 하나도 없습니다. 당신은 아마도 Windows Codepage 1252 일명“서유럽”을 언급하고있을 것입니다. 이는 다른 국가의 Windows 기본 인코딩과 다릅니다. 이것은 당신이 사용하려고 할 때 관련이 있습니다 System.Text.Encoding.Default 이것은 실제로 시스템마다 다릅니다.

/편집 : 내 대답과 내 의견을 오해 한 것 같습니다.

  1. 코드의 문제점은 .NET에 사용중인 인코딩을 알려야한다는 것입니다.
  2. "ANSI"가 다른 인코딩은 문제와 관련이 없었습니다. 그것은 오해를 막기위한“그건 그렇고, 그 중 하나는 역효과를 낸 것)입니다.

마지막으로 : 문제에 대한 해결책은 다음 코드가되어야합니다.

string text = System.IO.File.ReadAllText("path", Encoding.GetEncoding(1252));

여기서 중요한 부분은 적절한 사람의 사용법입니다. System.Text.Encoding 사례.

그러나 이것은 귀하의 인코딩이 실제로 Windows-1252라고 가정합니다 (그러나 나는 그것이 메모장 ++가“ANSI”로 의미하는 것)이라고 생각합니다. Nunit이 읽을 때 왜 귀하의 텍스트가 올바르게 표시되는지 모르겠습니다. 나는 Nunit에 텍스트 인코딩에 대한 일종의 자동 검색이 있거나 Nunit이 이상한 기본값 (예 : UTF-8)을 사용한다고 가정합니다.

그건 그렇고,“ANSI”는 실제로“American National Standards Institute”를 언급합니다. 이름의 일부로“ANSI”가있는 완전히 다른 표준이 많이 있습니다. 예를 들어, C ++는 (다른 것 중에서도) ANSI 표준입니다.

일부 상황에서만 Windows 인코딩을 참조하는 데 사용됩니다. 그러나 내가 설명하려고했듯이, 그것은 보통 특정한 인코딩이 아니라 Windows가 다른 국가의 기본값으로 사용하는 인코딩 클래스에. 이 중 하나는 Windows-1252입니다.

Console Sessin의 출력 코드 페이지를 CHCP 명령. Windows에서 지원되는 코드 페이지는 다음과 같습니다 여기, 여기, 그리고 여기. Console의 기초는 매우 간단합니다. 코드 페이지를 사용하여 표시 될 글리프를 dermine으로 표시하여 uncicode 또는 dbcs 문자를 표시합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top