2011-10-04 2 views
0

프로그램을 작성하고 있습니다. 이 프로그램의 일부에는 XML 파일에서 유니 코드 값을 읽고 화면에 문자를 표시하는 작업이 포함됩니다. 나는 다음과 같이했다 때유니 코드 문자로 인식 할 수없는 이스케이프 문자열이있는 문제가 발생했습니다.

지금 :

tbTester.Text = "\u597D"; 

그것은 (tbTester는 윈폼 텍스트 상자입니다) 괜찮 았는데. 하지만 다른 상황에서는 기본적으로 문자열을 '\ u'다음 값으로 변경해야했습니다. 이처럼 :

szOut = szOut + "\u"+k.UnicodeID + " "; 

은 나를 위해,이 모든 것을이 다를하지 않습니다. 지금은 "\ u"가 인식 할 수없는 이스케이프 시퀀스라는 것을 알려줍니다.

이제는이 문제를 보았습니다. 이중 슬래시 또는 '@'기호가이 특정 상황을 치료합니다. 텍스트 상자에 출력 된 문자 대신 '\ u430B'(또는 무엇이든) 만 포함됩니다. 제 첫 번째 예.

답변

2

첫 번째 예제와 같은 코드를 컴파일 할 때 컴파일 된 CIL 코드는 실제로는 이스케이프 시퀀스가 ​​아니라 문자 자체를 포함합니다. \u가 자체적으로 유효하지 않으므로 이로 인해받는 오류가 발생합니다.

유니 코드 코드 포인트를 정수로 사용하면 캐스팅만으로 문자로 변환 할 수 있습니다. 그리고 + 연산자는 나머지를 다룰 것이다 :

szOut = szOut + (char)k.UnicodeID + " "; 

을 나는 다음과 같은 경우에 string.Format()을 선호하는 경향이 있지만 :

szOut = string.Format("{0}{1} ", szOut, (char)k.UnicodeID); 
+0

고맙습니다. 저를 도와 주셨습니다. – user738383

2

szOut = szOut + (char)k.UnicodeID; 

당신은 할 필요가 없습니다 시도 리터럴 문자열이 아니기 때문에 더 이상 문자를 이스케이프 처리합니다. 숫자를 동등한 문자로 변환하면됩니다.

관련 문제