나는 계획하고있는 소프트웨어 시스템에 대한 문자 인코딩의 함의를 확인하려고 노력하고 있으며 테스트를하는 동안 이상한 것을 발견했습니다.C#에서 유니 코드 SMP "character"
내 지식으로 C#은 내부적으로 두 개의 16 비트 필드를 사용하는 모든 유니 코드 코드 포인트를 포함하는 UTF-16을 사용합니다. 그래서 저는 문자 리터럴을 만들고 의도적으로 선택하고 싶었습니다. 왜냐하면 전자가 SMP 평면에서 나온 것이고 후자가 BMP 평면에서 나온 것이기 때문입니다. 결과는 다음과 같습니다.
char ch1 = '얤'; // No problem
char ch2 = ''; // Compilation error "Too many characters in character literal"
무슨 일 이죠?
"얤얤"라는 문자열이 MessageBox에 올바르게 표시되어 있지만 ToCharArray를 사용하여 char []로 변환 할 때 세 개가 아닌 네 개의 요소가있는 배열이됩니다. 또한 String.Length는 3이 아닌 4로보고됩니다.
여기에 뭔가가 있습니까?
아마도 복잡한 문자를 유니 코드 코드 포인트 (Unicode Code Point)로 저장하는 것이 일반적이며 길이는 2 문자입니다. –
@ RaymondChen sharp eye ... 몇 가지 다른 검색을 시도했지만 관련성이 없다고 판명되었습니다! –
어떻게 든이 질문을 복제본으로 닫을 수 있습니까? –