UTF-8 & EUC-KR
ASCII(American Standard Code for Information)
- 1960년대 ANSI에서 표준화한 7비트 부호 체계
- 프로그램, 기기간 통신 및 데이터 저장을 위해 문자/기호가 컴퓨터 언어인 0,1 변환 필요성 대두
- 아스키코드표 : 128개 문자 테이블
- 128개 숫자(키)에 특정 문자값 할당
- 0x00 ~ 0x7F : 총 127개 문자(대소문자 , 숫자, 제어문자, 특수문자)
- ‘A’ = 0x41 로 매핑
Unicode
- 숫자(키)와 글자(값)이 1:1 로 매핑된 코드.
- 아스키코드로 표현할 수 없는 문자(값)들을 유니코드를 통해 특정 숫자(키)와 1:1로 매핑.
- U+ 라는 접두어가 붙어 있음.
- 아스키코드의 0x41은 대문자 A이고, 이를 유니코드표에서 찾으면 U+0041이 됨.
- ‘A’ = U+0041
- 영어,숫자,기본기호 외 특정 국가에서 사용되는 문자 처리 필요성 대두 → 1바이트 정의 아스키코드 확장 요구
- 아스키코드로 표현되지 않는 문자 표현울 위해 전세계의 모든 문자에 특정 숫자(키)와 맵핑
- 2의 20승 + 2의 16승 만큼의 공간을 사용하므로 유니코드에 거의 모든 문자 수용
- 한자(10만여자) 제외 + 한글의 경우, 조합형을 위한 자모 및 완성형 모두 수용
- 분할된 테이블 사용
- 타국에서 한글 확장팩이 설치되지 않더라도 한글 표현 가능
- 글로벌 서비스 제공 또는 다양한 언어로 작성되는 환경에 적합
- 리눅스 계열의 서버의 경우, 유니코드 지원 또는 유니코드로 인코딩 설정 가능
- 일반적으로 서버 인코딩은 UTF-8 이용
EUC-KR
- 2바이트로 표현할 수 있는 코드표가 있음
- EUC-KR에서는 한글 1자가 2byte
CP949
- 2바이트로 표현할 수 있는 코드표가 있음
- Window 의 경우, CP949 방식 사용
- MS에서 EUC-KR 방식에서 확장 후, CP949 또는 MS949 로 통칭.
- 현재, Window는 유니코드 기본 베이스
UTF-8
- UTF-8에서는 한글 1글자가 3byte
- 한글 ‘가’는 ‘AC00’
- 가변길이 문자 인코딩 방식
- 조합형 방식의 문자집합(Character Set) + 유니코드를 사용하는 인코딩 방식
- ASCII 표현 가능
- 한글(3바이트) + 공백, 영문(1바이트)
- 유니코드 1개 문자 표기를 위해, 1바이트~4바이트 사용.
- (ex) U+0000 ~ U+007F 범위 아스키문자 : UTF-8 방식 1바이트 표기
- 4바이트 표현 문자는 다국어 평면(BMP) 바깥의 유니코드 문자. 거의 사용안함.
- 사용 환경 : PHP / MYSQL/Apache / Nginx 등
- 유니코드표 : U+로 시작하는 문자 테이블
-
UTF-8 / UTF-16 / UTF-32 비교
- 유니코드의 숫자 키 표현방식의 차이
- 같은 유니코드표로 다르게 표현하는 방식.
-
UTF-8 : 가변바이트 활용
1바이트만으로 활용 가능한 ‘A’ 의 경우 : 0x41
-
UTF-16 : 2바이트(16비트) 활용
2바이트 모두 활용 ‘A’ 의 경우 : 리틀엔디안/빅엔디안 방식에 따른 표기 차이
LE(Little-Endian) 방식 (FF FE) : 0x4100
BE(Big- Endian) 방식 (FE FF) : 0x0041
-
UTF-32 : 4바이트 활용
4바이트 모두 활용 ‘A’ 의 경우 : 리틀엔디안/빅엔디안 방식에 따른 표기 차이
LE(Little-Endian) 방식: 0x4100 0000
BE(Big- Endian) 방식 : 0x0000 0041
참조
- 위키 https://ko.wikipedia.org/wiki/%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C
- https://inkim0927.tistory.com/65 [Inkim’s Project Logging:티스토리]