2008-10-18 4 views

답변

-1

NUnit과 함께 작동하는 이유는 모르겠지만, NotePad ++로 파일을 열면 ANSI 형식으로 표시됩니다. 이제는 UTF-8로 변환되어 작동합니다.

아직도 콘솔에서 NUnit으로 작동하는 이유가 궁금합니다. 적어도 지금은 작동합니다.

나는 콘솔에서 내가 ANSI 파일을 읽을 수없는 이유를 질문은 여전히 ​​유효하기 때문에 아래 질문에이 질문에 대해 투표를 얻을 이유를 얻을 수 있지만, 내가 할 수있는 NUNIT에없는 업데이트?

+0

원래 질문에 정보를 추가하는 동안 응답을 추가하지 마십시오. 단순히 원래 질문을 편집하십시오. 그것은 downvote (들)의 일부를 설명 할 수 있습니다. – Tanktalus

+0

내가 downvoted하기 전에 나는 정보를 추가하지 않았습니다. 내가 게시 한 정보가 새로 발견되었습니다. –

3

.NET 클래스 (System.IO.StreamReader 등)는 기본 인코딩으로 UTF-8을 사용합니다. 다른 인코딩을 읽고 싶다면이를 명시 적으로 적절한 생성자 오버로드에 전달해야합니다.

또한 "ANSI"라는 단일 인코딩이 없습니다. 아마도 Windows 코드 페이지 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 인 것으로 가정합니다 (그러나 나는 Notepad ++가 "ANSI"를 의미하는 것으로 생각합니다). NUnit이 읽을 때 텍스트가 올바르게 표시되는 이유를 모르겠습니다. NUnit에는 텍스트 인코딩을위한 자동 검색 기능이 있거나 NUnit에서 이상한 기본값 (즉, UTF-8이 아님)을 사용한다고 가정합니다.

아, 그런데 : "ANSI"는 실제로 "미국 표준 협회"를 나타냅니다. 그들의 이름의 일부로 "ANSI"를 가진 완전히 다른 표준이 많이 있습니다. 예를 들어, C++은 ANSI 표준 (다른 것들도 포함)입니다.

일부 컨텍스트에서는 Windows 인코딩을 참조하는 데 부정확하게 사용됩니다. 그러나 거기에서도 내가 설명하려고했듯이 일반적으로 특정 인코딩을 나타내지 않고 Windows가 다른 국가의 기본값으로 사용하는 인코딩 클래스를 나타냅니다. 이 중 하나는 Windows-1252입니다.

+0

Notsad ++의 Ansi 형식 : http://img359.imageshack.us/img359/9194/ansinz4.png 위키에서 : http://en.wikipedia.org/wiki/ASCII 및 http : //en.wikipedia .org/wiki/ANSI_escape_code –

+0

이러한 링크가 모두 참조하는 사실 외에도 첫 번째 그림 (Notepad ++ 표시)은 컨텍스트에서 단어의 부정확 한 사용입니다. 아마 여기에서 의미하는 바는 .Net의'Default' 인코딩, 즉 특정 인코딩이 아닌 현재 시스템의 기본 코드 페이지와 동일합니다. –

+0

Notepad ++가 UTF8이 아니 었음을 보여줍니다 ... 그리고 많은 소스에서 거짓 일 때 ANSI가 존재하지 않는다고 말해줍니다. 나는 내 연구를했고 당신을해야합니다. 하지만 아직도 날 이해 못 하겠니? 나는 당신이하는 모든 것을 이해해야하는 인코딩 마스터가 아닙니다. A –

1

chcp 명령을 사용하여 콘솔 sessin의 출력 코드 페이지를 설정해보십시오. 창에서 지원하는 코드 페이지는 here, herehere입니다. 주의 할 것은 콘솔은 매우 간단합니다. 코드 페이지를 사용하여 표시 될 글리프를 지워서 UNCICODE 또는 DBCS 문자를 표시합니다.

관련 문제