[기타]UTF-8 이란?
UTF-8은 유니코드를 위한 가변길이 문자 인코딩 방식 중 하나
Universal Coded Character Set + Transformation Format - 8 -bit 의 약자
UTF-8은 유니코드 한 문자를 표현하기 위해 최대 4바이트까지 사용
아스키 문자들은 1바이트만을 사용하며 한글은 3바이트를 사용
4바이트로 표현되는 문자는 기본 다국어 평면 외의 유니코드 문자이며 거의 사용되지 않음
아스키 문자는 1 바이트만을 사용하므로 7비트 아스키문자와 동일한 방법으로 표시
다른 문자들은 4바이트까지의 비트 패턴으로 표시
1바이트 : 0xxxxxxx 로 표현되며 항상 최상위 비트가 0
2바이트 : 110xxxxx 10xxxxxx 로 표현되며 첫 바이트의 최상위 3비트는 항상 110으로 시작
3바이트 : 1110xxxx 10xxxxxx 10xxxxxx 로 표현되며 첫 바이트의 최상위 4비트는 항상 1110으로 시작
4바이트 : 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 로 표현되며 첫 바이트의 최상위 5비트는 항상 11110으로 시작
위에서 보듯이 최상위 1바이트를 제외하고는 모두 10으로 시작하는 것을 볼 수 있음
문자를 자르다보면 비트 수에 의해 잘못 잘리게 되어 이상하게 표현될 수 있음
영문/숫자는 1바이트씩 차지하므로 1바이트로 자르면 항상 동일하게 자를 수 있지만 3바이트를 사용하는 한글은 1바이트씩 자르면 의미가 없는 문자가 될 확률이 높음
-> hell world 를 hello \n world 로 나누는 함수를 만든다고 했을 때 발생할 수 있는 문제 ( 안녕 세상 -> 안녕 \n 세상 으로 줄 바꿈 시 )
따라서 자르기 전에 각 바이트에 shift 연산자를 통해 확인이 가능함
단, 이는 문자열에 해당되며 단순 1문자 (char)에는 적용되지 않음
if (letter[0] >> 11) {
// 12비트 이상으로 표현 가능한 유니코드
len = 3;
} else if (letter[0] >> 7) {
// 8비트 ~ 11비트로 표현 가능한 유니코드
len = 2;
} else {
// 7비트 이하로 표현 가능한 유니코드
len = 1;
}
'[프로그래밍 공부] > 기타' 카테고리의 다른 글
[Git] 유니티 프로젝트를 위한 깃허브(GitHub) 레포지토리 생성하기 (0) | 2023.01.24 |
---|---|
Steam Direct 게임 등록하기 (2) | 2022.01.22 |
steamworks sdk 사용하여 빌드하고 게임 올리기 (1) | 2022.01.22 |
헝가리안 표기법 (0) | 2022.01.22 |
[기타]Install Shild를 이용하여 배포하기 (0) | 2021.12.11 |