작성
·
333
0
유니코드 관련해 질문이 있습니다!
UTF16 방식이 2바이트에 각종 문자를 할당하는 것이라면, 한글에도 문자 하나하나에 2바이트 크기의 어떤 고유한 데이터가 할당되어 있는 것이라고 이해했습니다.
그런데 이러면 굳이 왜 locale("kor")을 해야하는 것인지 의문이 듭니다. wchar_t와 L을 쓰면, 이 데이터가 유니코드이면서 utf16 방식임을 충분히 알려준 것 아닐까요..? 그러면 데이터를 보고 이것이 한글임을 바로 알 수 있지 않나요??
답변 1
0
이건 제 뇌피셜입니다만... 질문 겸 저도 답변을 달아봅니다.
애초에 utf16의 크기 2byte는 온 세상에 있는 모든 글자를 담을수 없습니다.
하지만 utf8과는 다르게 (8의 경우에 한글은 3byte로 입력되죠?)
2바이트로 한자/한글 모두 표현을 할 수 있는데
이는 같은 데이터라고 해도 해당 locale 마다 다른 글자를 인식하게 만들어서 가능해진게 아닐까 싶습니다.
음.. 이해가 잘 안되실 수 있는데 예를들어 utf16의 한자버젼인지 한글버젼인지 버젼을 나눠놓고
디폴트 버젼은 한글이 표현되지 않는 버젼이다보니 그 버젼을 맞춰줘야 한글이 정상적으로 표기되는거라 생각합니다.
만약 모든 문자를 utf16으로 정말로 표현이 가능했다면 utf32는 나올 필요가 없었겠죠?
아 추가로 찾아보니 setlocale(LC_ALL, “”);를 사용하면 해당 시스템 언어 설정에 따라서 자동 설정 된다고 하는데
가끔가다 외국에서 만든 프로그램의 경우 한국 시스템에서 돌아가지 않아서 시스템을 해당 외국 언어와 같이 맞춰줘야만 정상적으로 표현되는걸보면 뇌피셜입니다만 맞는것 같습니다..