※ 한글 인코딩
(특징)
⑴ 2가지 방식 존재
① EUC-KR
② UTF-8
(배경)
- Window 의 경우, CP949 방식 사용
→ MS에서 EUC-KR 방식에서 확장 후, CP949 또는 MS949 로 통칭.
→ 현재, Window는 유니코드 기본 베이스
※ 아스키코드(ASCII : American Standard Code for Information)
(개념)
1960년대 ANSI에서 표준화한 7비트 부호 체계
→ 프로그램, 기기간 통신 및 데이터 저장을 위해 문자/기호가 컴퓨터 언어인 0,1 변환 필요성 대두
(특징)
① 아스키코드표 : 128개 문자 테이블
② 128개 숫자(키)에 특정 문자값 할당
③ 0x00 ~ 0x7F : 총 127개 문자(대소문자 , 숫자, 제어문자, 특수문자)
※ 유니코드(UniCode)
(개념)
숫자와 문자에 해당하는 키:값이 1:1로 매핑된 형태의 코드
U+ 접두어로 표기
(ex)
아스키코드 0x41 = 'A' = U+0041 유니코드
(특징)
① 영어,숫자,기본기호 외 특정 국가에서 사용되는 문자 처리 필요성 대두
→ 1바이트 정의 아스키코드 확장 요구
③ 아스키코드로 표현되지 않는 문자 표현울 위해 전세계의 모든 문자에 특정 숫자(키)와 맵핑
→2의 20승 + 2의 16승 만큼의 공간을 사용하므로 유니코드에 거의 모든 문자 수용
→ 한자(10만여자) 제외 + 한글의 경우, 조합형을 위한 자모 및 완성형 모두 수용
→ 분할된 테이블 사용
① 타국에서 한글 확장팩이 설치되지 않더라도 한글 표현 가능
→ 글로벌 서비스 제공 또는 다양한 언어로 작성되는 환경에 적합
② 리눅스 계열의 서버의 경우, 유니코드 지원 또는 유니코드로 인코딩 설정 가능
→ 일반적으로 서버 인코딩은 UTF-8 이용
cf. 한글 조합 2가지 방식
① 조합형
- 자음과 모음을 초성,중성,종성 구분하여 문자 작성 방식
- 1글자당 각각 1바이트씩 총 3바이트 문자 인식
② 완성형
- 문자를 하나의 완성된 글자 그 자체로 인식
- 완성형 문자표를 토대로 문자 인식
- 문자표에 없는 문자(ex. '괡' 의 경우 □로 표기)
- 유니코드보다 확장성 저하.
☞ 윈도우의 인코딩 방식은 CP949 완성형. 조합형으로 쓸 수 있는 거의 모든 한글 포함한 한글 테이블.
☞ '한글 작성' 측면이 아닌 웹서비스 제공 측면에서 문제 발생.
bc. 웹서버/서버 운영체제/ DB/PHP의 경우, UTF-8/EUC-KR 인코딩 방식이 상호 동일해야 문자 정상적 표현 가능.
※ UTF-8
(개념)
가변길이 문자 인코딩 방식
(특징)
① 조합형 방식의 문자집합(Character Set) + 유니코드를 사용하는 인코딩 방식
② ASCII 표현 가능
③ 한글(3바이트) + 공백, 영문(1바이트)
④ 유니코드 1개 문자 표기를 위해, 1바이트~4바이트 사용.
(ex) U+0000 ~ U+007F 범위 아스키문자 : UTF-8 방식 1바이트 표기
→ 4바이트 표현 문자는 다국어 평면(BMP) 바깥의 유니코드 문자. 거의 사용x
⑤ 사용 환경 : PHP / MYSQL/Apache / Nginx 등
⑥ 유니코드표 : U+로 시작하는 문자 테이블
cf. 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
(결론)
다수의 웹 서비스 환경의 수요로 많은 소스 코드들은 UTF-8로 작성되고 있다.
※ EUC-KR
(개념)
-완성형 문자 인코딩 방식
-한글의 경우, 2바이트로 표기
(특징)
① EUC-KR의 경우 웹, EUC-KR확장버전인 CP949의 경우 윈도우에서 많이 사용
→ 2바이트권 문자에서 주로 사용
②한글의 경우, 2바이트로 사용하는 문자 집합(Character Set)
③ EUC-KR을 사용하는 국가(한글 사용국)에서만 문자가 제대로 보임
→ 한글, 영어만 사용하는 페이지에서 적합
→CP949 또한 2바이트 방식.
④ 영어 같은 1바이트 단일 문자가 아닌, 한글/일어/중국어처럼 1글자당 2바이트가 들어가는 더블바이트 문자권에서 많이 사용 → 해당 문자는 인코딩 변환에서 자유롭지 못함.
⑤ EUC-KR/CP949 코드표 : 2바이트 문자 표기
★결론
- 웹에서는 EUC-KR 끼리 UTF-8끼리만 인코딩 변환 가능.
- 웹에서 기본 UTF-8을 사용하므로 한글 사이트 제작 시, 인코딩을 EUC-KR로 설정해야함.
① 소스 자체에서 인코딩 변환 함수를 사용하여 완성형(EUC-KR)로 코딩
② 서버 자체에서 다양한 인코딩 방식 지원 필요
★ 확인 필수 항목
① 서버 OS 인코딩
② 웹서버 인코딩
③ PHP 인코딩
④ 웹소스 인코딩
⑤ 데이터베이스 서버 인코딩
참고링크
https://studyforus.tistory.com/167
'[ComputerScience]' 카테고리의 다른 글
[CS Interview :: OS ] 프로세스와 스레드(Process vs Thread) (0) | 2020.10.08 |
---|---|
[CS : Interview ] (0) | 2020.10.07 |