2013-03-16 6 views
1

내 응용 프로그램은 TCP를 통해 ISO 8859-1 챠리스의 정수 값을 수신하고이를 콘솔에 테스트 용으로 표시해야합니다. ISO 8859-1 문자열을 지능/바이트 변환, 나는 this question의 허용 대답에서 코드를했다 :ISO 8859-1로 변환 할 때 콘솔에 작은 문자가 표시되지 않습니다.

var e = Encoding.GetEncoding("iso-8859-1"); 
var s = e.GetString(new byte[] { 189 }); 

그것은 ISO에서 ½입니다 의 값으로, 예를 들어 잘 작동 8859-1. 그러나 테스트에서 나는 154 값이 Ä (라틴 소문자 caron 포함) 인 this site에 따라 Byte를 얻었습니다. enter image description here 및 디버거는 일반 문자열을 보여줍니다 : enter image description here

어떤 오류 수를

문제점은 바로 그런 물음표 표시가 콘솔에 표시 나던이다?


도움이 될 것입니다.

+0

재현 할 수 없습니다. LinqPad'Encoding.GetEncoding ("iso-8859-1"). GetString (새 바이트 [] {189})'은'½'을 생성합니다. – Oded

+0

이것은 C# 문제 * 그 자체가 아니므로 제목을 수정하고 있습니다. – user7116

+1

이 표준은 실제로 154 값을 정의합니까? http://en.wikipedia.org/wiki/ISO/IEC_8859-1은 그렇게 보이지 않습니다. –

답변

3

저는 여기서 사지에 나가겠습니다. ISO/IEC 8859-1은 126과 159 사이의 값을 정의하지 않습니다. http://en.wikipedia.org/wiki/ISO/IEC_8859-1

을 참조하십시오.

var e = Encoding.GetEncoding("Windows-1252"); 
    var s = e.GetString(new byte[] { 154 }); 

    Console.OutputEncoding = Encoding.GetEncoding("Windows-1252"); 

    Console.WriteLine(s); 

저는 Windows-1252를 선호합니다.

는 ... 그러나 초안 HTML 5 규격은 실제로 ISO-8859-1로 광고 문서 는 Windows-1252 인코딩으로 해석 할 수 있어야합니다. [2])

http://en.wikipedia.org/wiki/ISO/IEC_8859-1

+0

네, "š"는 ISO 8859-1에 정의되어 있지 않습니다. 코드 포인트 185의 ISO 8859-2에 있습니다. – liori

+0

아마도 해결 방법이 있습니까? 왜냐하면 C++에서 std :: char은 값이 154 일 때 š를 표시하기 때문입니다. – Tearsdontfalls

+0

@liori 시도해 보았지만 작동하지 않습니다. – Tearsdontfalls