티스토리 뷰
컴퓨터의 정보 표현
- 비트 bit
- 0 / 1
- 바이트 byte
- 적당한 개수의 비트의 묶음
- 보통 메모리 주소로 식별하는 구분 단위
- 일반적으로 8비트 (정확히 모든 byte가 8비트는 아님)
- 옥텟 octet
- 정확한 8비트를 말함
ASCII (American Standard Code for Information Interchange)
- Control Characters 0~31 + 127
- Printable Characters 32~126
문자 인코딩
- 문자의 번호를 컴퓨터에서 표현하는 방법
- 문자의 번호 -> 바이트의 열로 표현하는 방법
KS X 1001
- 국가표준 KS X 1001 정보 교환용 부호계 (한글 및 한자)
- 구 KS C 5601 - 1987
- 94 * 94 행렬에 각종 기호, 한글 음절 (2,350자), 한자, 히라가나, 카타카나 등 배정
- 왜 94 * 94 ?
- Printable Characters 와 연관이 있음
- 문자 집합과 문자 인코딩은 서로를 고려하여 설계된다.
EUC-KR (Extended Unix Code)
- 멀티바이트 문자 인코딩
- ISO-2022
- 8번째 비트가 0인 옥텟: KS X 1003 (ASCII 를 약간 수정한 것)
- 8번째 비트가 1인 옥텟 둘: KS X 1001 의 문자 행번호와 열번호를 각 옥텟으로
- 그래서 이전에는 흔히 영숫자는 1바이트, 한글은 2바이트라고 했음
유니코드 (Unicode)
- 전 세계의 모든 문자를 담은 하나의 문자 집합을 만들어 모두가 이것을 쓰자는 의도로 만듬
- 코드 포인트 (code point)
- 문자의 번호 라는 뜻
- 표기법: U+0030 (최소 4자리, 16진법)
- 코드 포인트의 범위: 0 ~ 10FFFF(16) (21비트)
- 플레인 (plane)
- 10000(16) = 65536(10) 개의 범위를 묶어 부르는 말
- BMP (Basic Multilingual Plane)
- Plane 0, U+0000 ~ U+FFFF
- 대부분의 현대 문자, 기호 등을 포함하는 주로 사용하는 플레인
- U+0000 ~ U+007F 는 ASCII 와 같음
유니코드 인코딩
- UTF (Unicode Transformation Format)
- 유니코드 코드포인트를 바이트열로 바꾸는 방법
- UTF - 32
- 32 비트 정수 표현은 모든 코드포인트를 표현할 수 있다.
- UTF - 8
- 기존 ASCII 텍스트와의 호환
- 가변 길이 인코딩
- 처음 연속된 1의 개수 및 그 뒤의 0으로 바이트를 분할
- UTF - 16
- 가변 길이 인코딩
- BMP의 문자는 16비트 정수로 표현 가능
- 그 외의 문자는 2개의 16비트 값으로 표현
- BOM (byte order mark)
- U+FEFF
- 바이트열의 엔디안을 표현 -> 배열하는 방
- U+FEFF 가 어떻게 표현되었는지 보면 알 수 있음
- 텍스트의 가장 앞에 위치
- 선택적, 없어도 됨
유니코드 정규화
- 하나의 문자가 유니코드로 2가지 이상의 표현이 존재하는 경우
- NFC (Normalization Form C)
- 한글의 경우, 조합된 한글 음절 사용
- 음절 하나가 코드포인트 하나
- 한글의 경우, 조합된 한글 음절 사용
- NFD (Normalization Form D)
- 한글의 경우, 자모에서 초성, 중성, 종성을 하나씩 모아서 한 음절을 표현
- 음절 하나는 코드포인트 2개, 3개
- 한글의 경우, 자모에서 초성, 중성, 종성을 하나씩 모아서 한 음절을 표현
- ex) ‘빵’ -> NFC 의 경우 코드포인트 1개로 보나 NFD 의 경우 ‘ㅃ’, ‘ㅏ’, ‘ㅇ’ 으로 코드포인트 3개로 표현할수 있다.
- mac OS 에서 윈도우나 리눅스로 파일명이 “그래프” 인 파일을 보내면 “ ㄱㅡㄹㅐㅍㅡ’” 이런식으로 보내지는데 이것은 맥은 NFD, 윈도우나 리눅스는 NFC 방식을 사용하기에 생기는 문제다.
'etc' 카테고리의 다른 글
Webstorm screen flickering (0) | 2023.01.01 |
---|---|
Java 정규표현식 검사 사이트 (0) | 2021.06.01 |
yaml 설정파일 값 사용하기 (0) | 2021.04.01 |
JSend (0) | 2021.03.24 |
trailing commas (0) | 2021.03.21 |
링크
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- js promise
- java
- 백기선 스터디
- 킹수빈닷컴
- 이펙티브자바 스터디
- BOJ
- ㅇㄷㅇㅈ
- dreamcoding
- 프로그래머스
- 김영한 JPA
- 모던자바스크립트
- 가상 면접 사례로 배우는 대규모 시스템 설계 기초
- 김영한 http
- JS 딥다이브
- 프로그래머스 SQL
- HTTP 완벽 가이드
- js api
- GCP
- HTTP 완벽가이드
- 백준
- 이펙티브자바 아이템60
- 이펙티브자바 아이템59
- 드림코딩
- http
- 이펙티브자바
- REST API
- JPA 연관관계 매핑
- Spring Security
- js array
- 패스트캠퍼스 컴퓨터공학 완주반
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
글 보관함