인프런 커뮤니티 질문&답변

이창연님의 프로필 이미지
이창연

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

문자와 문자열

굳이 locale을 설정해야 하는 이유가 있나요?

작성

·

328

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, “”);를 사용하면 해당 시스템 언어 설정에 따라서 자동 설정 된다고 하는데

가끔가다 외국에서 만든 프로그램의 경우 한국 시스템에서 돌아가지 않아서 시스템을 해당 외국 언어와 같이 맞춰줘야만 정상적으로 표현되는걸보면 뇌피셜입니다만 맞는것 같습니다..

이창연님의 프로필 이미지
이창연

작성한 질문수

질문하기