2012-05-25 3 views
0

내 응용 프로그램을 현지화하고 있으며이를 통해 사용자에게 알리는 메시지 상자가 있습니다. 텍스트 영역에 중국어 문자를 포함 시키면 VS2010에서 디버깅 할 때 제곱 한 묶음처럼 보이지만 속성에 바인딩 된 객체를 통해 UI에 표시 될 때 적절한 문자로 변환됩니다. 그러나 코드가 직접 messagebox.show ("중국어 문자")를 호출하면 빈 사각형이 표시됩니다. 왜 이런거야?Silverlight MessageBox.Show()가 한자를 표시하지 않습니다.

답변

2

Silverlight에는 "double bytes"같은 것이 없습니다. 모든 문자열은 utf-16으로 인코딩됩니다. 더블 바이트는 CJK 텍스트를 인코딩하는 방법을 찾기 위해 8 비트 코드 페이지에서 해킹 된 것입니다. 인코딩 된 텍스트는 Encoding 클래스를 사용하여 utf-16으로 변환해야합니다.

문자가 잘못된 인코딩으로 인해 제어 코드이기 때문에 사각형으로 표시된 텍스트를 볼 수 있습니다. 또는 컴퓨터에 설치된 글꼴의 글리프 지원이 누락되었습니다. 너무 빠르게 사라지는 문제이기도합니다. 보통은 동아시아 글꼴 지원이 설치되지 않은 상태에서 XP에서만 사용할 수 있습니다.

+0

글자는 번역자에서 유래했으며 Excel 스프레드 시트에서 제공 되었기 때문에 아마도 유니 코드입니다. 스프레드 시트에서 열이 nvarchar 인 테이블로 데이터를 가져옵니다. 내 프로그램에 데이터를로드하고 속성에 할당 한 다음 중국어로 표시되는 화면의 텍스트 블록에 바인딩합니다. 대신 문자열을 사용하여 MessageBox.Show (ChineseCharacterString)를 시작하면 상자 묶음이 대신 표시됩니다. 그 과정의 어떤 부분을 잘못 추측하고 있습니까? – Josh

+0

어. 아무 생각도, 바이트가 아닌 문자열을 쫓아. –

+0

오늘날 베테랑으로서 말하면서, 오늘날 우리가 가지고있는 더 작은 멀티 바이트 인코딩 세트 (UTF-8, UTF-16, UTF-32)와는 달리, 실제로는 해킹이 아니고 많은 멀티 바이트 인코딩이 필요했습니다. . 이제 특정 언어가 12 가지의 별도 인코딩에 동의 할만큼 충분히 행동을 취할 수없는 경우 ... –

관련 문제