2012-12-19 5 views
1

문자열과 같이 공백이나 null을 넣으려고하면 •와 같이 인쇄 할 수없는 ASCII 확장 문자를 허용하도록 C#에서 문자열을 만드는 방법은 무엇입니까?C# 문자열에서 ASCII 확장 됨

+2

있습니다 사용하여 변환 : 문자열 리터럴을 만들고, 콘솔에서 문자열을 읽거나, UI 컨트롤을 통해 가져 오는 중입니까? – dasblinkenlight

+0

코드 예를 들려 줄 수 있습니까? 질문을 명확히하기 위해? – imslavko

+2

아직 작성하지 않았다면 Joel Spolsky가이 기사를 꼭 읽으십시오 : [모든 소프트웨어 개발자가 절대적으로 최소한이어야하며, 유니 코드와 문자 세트에 대해 반드시 알고 있어야합니다 (변명의 여지가 없습니다!)] (http://www.joelonsoftware.com /articles/Unicode.html) – Cameron

답변

0

시도해보십시오. 해당 캐릭터를 다음과 같이 문자열로 변환하십시오.

string equivalentLetter = Encoding.Default.GetString(new byte[] { (byte)letter }); 

이제 동등한 문자에 올바른 문자열이 포함됩니다. 유로화 기호로 이것을 시도했지만 효과가있었습니다.

+1

당신이하고있는 일은 단순히 원래 문자를 멀리 (문자! = 바이트) 및 지정되지 않은 인코딩으로 치료. (부호화.기본값은 구성에 따라 다름) – Polity

+0

@Polity : 나는 이것이 단지 방법 일 뿐이라고 생각하고 확장 된 ascii 문자를 렌더링했습니다 ... 이것은 단지 해결책이거나 위의 질문입니다. –

+0

아니요, Encoding.Default가 구성에 따라 다르기 때문에 호출이 QA의 컴퓨터에서도 작동한다는 보장이 없습니다 – Polity

0

.NET 문자열은 확장 ASCII가 아닌 UTF-16으로 인코딩됩니다. 단순히 문자에 숫자를 추가하면 UTF-16 일반 세트 내에서 또 다른 정의 된 문자를 얻을 수 있습니다. 확장 된 ASCII 인코딩에서와 같이 기본 문자를보고 싶다면 새로 계산 된 문자를 UTF-16에 대한 인코딩에서 변환해야합니다. 참조 : http://msdn.microsoft.com/en-us/library/66sschk1.aspx

+0

"extended ascii"는 기본적으로 0-127 바이트 값이 순수 ASCII 문자와 동일한 의미를 갖는 문자 당 1 바이트 문자 인코딩입니다. (기술적으로 UTF-8은 바이트 단위로 문자 당 1 바이트를 가지지 만 확장 ASCII로도 볼 수 있습니다.)이 용어는 묻어가 잘못 사용하거나 오해 한 것입니다. – Nyerguds

1

확장 ASCII는 8 비트가 다른 값으로 설정된 ASCII입니다.

커미션이 확장 ASCII에 대한 표준을 비준하지 않았다는 사실에 문제가 있습니다. 거기에 변종이 많이 있고 당신이 무엇을 사용하고 있는지 말할 수있는 방법이 없습니다.

이제 C#은 사용중인 확장 ASCII와는 다른 UTF-16 인코딩을 사용합니다. 또는 당신이 어떤 파일 사용 등 예처럼 사용 인코딩 알아낼 수

string a ="\u2649" ; //where 2649 is a the Unicode number 
Console.write(a) ; 

을 다음과 같이

당신은 일치하는 유니 코드 문자를 찾아 표시해야합니다. 인코딩 윈도우 1252 :

Encoding encoding = Encoding.GetEncoding(1252); 

와 UTF-16

Encoding enc = new UnicodeEncoding(false, true, true); 

Encoding.Convert (Encoding, Encoding, Byte[], Int32, Int32) 

세부 사항 당신이있어 좀 더 컨텍스트를 줄 필요가 here

관련 문제