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

이창연님의 프로필 이미지

작성한 질문수

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

문자와 문자열

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

22.01.01 12:32 작성

·

306

0

유니코드 관련해 질문이 있습니다!

UTF16 방식이 2바이트에 각종 문자를 할당하는 것이라면, 한글에도 문자 하나하나에 2바이트 크기의 어떤 고유한 데이터가 할당되어 있는 것이라고 이해했습니다.

그런데 이러면 굳이 왜 locale("kor")을 해야하는 것인지 의문이 듭니다. wchar_t와 L을 쓰면, 이 데이터가 유니코드이면서 utf16 방식임을 충분히 알려준 것 아닐까요..? 그러면 데이터를 보고 이것이 한글임을 바로 알 수 있지 않나요??

답변 1

0

가또님의 프로필 이미지

2022. 01. 01. 18:06

이건 제 뇌피셜입니다만... 질문 겸 저도 답변을 달아봅니다.

 

애초에 utf16의 크기 2byte는 온 세상에 있는 모든 글자를 담을수 없습니다.

하지만 utf8과는 다르게 (8의 경우에 한글은 3byte로 입력되죠?)

2바이트로 한자/한글 모두 표현을 할 수 있는데 

이는 같은 데이터라고 해도 해당 locale 마다 다른 글자를 인식하게 만들어서 가능해진게 아닐까 싶습니다.

 

음.. 이해가 잘 안되실 수 있는데 예를들어 utf16의 한자버젼인지 한글버젼인지 버젼을 나눠놓고 

디폴트 버젼은 한글이 표현되지 않는 버젼이다보니 그 버젼을 맞춰줘야 한글이 정상적으로 표기되는거라 생각합니다.

 

만약 모든 문자를 utf16으로 정말로 표현이 가능했다면 utf32는 나올 필요가 없었겠죠?

 

가또님의 프로필 이미지

2022. 01. 01. 18:09

아 추가로 찾아보니 setlocale(LC_ALL, “”);를 사용하면 해당 시스템 언어 설정에 따라서 자동 설정 된다고 하는데

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