티스토리 뷰
반응형
인코딩 / 디코딩
- 문자, 기호 <-> 컴퓨터가 이해할 수 있는 값으로 변환하는 과정을 통칭.
- 인코딩: 문자를 0, 1로 변환
- 디코딩: 0, 1로 작성된 값을 문자로 변경
- 이러한 변환 과정은 미리 정해진 기준(= Character Set)을 바탕으로 수행되어야 의미가 있음.
Character set
- 어떤 문자들이 컴퓨터에 저장될 때 어떤 코드로 저장될지 규칙을 정의한 집합이라고 함.
- 아래에 작성할 ASCII, UTF-8 또한 '어떤 문자들이' '어떤 코드로 저장될지(= 인코딩 방식)를 정의하므로 Char set에 포함된다.
- ASCII: '영어'를 '1byte 코드로' 저장
- UTF-8: '모든 문자열을 대표하는 유니코드'를 '1 ~ 4 byte 가변 길이 코드로' 저장
- 여기에 설명이 잘 나와 있다!!!
MySQL에서 문자셋(Character Set)과 Collation의 차이
문자셋(Character Set) 말 그대로 특정 '문자(좀 더 정확히는 symbol)'가 컴퓨터에 저장될 때 어떠한 '코드'로 인코딩되어 저장될 것인지에 대한 규칙이 정의되어있는 집합을 말함. (A character set is a set o
blog.daum.net
ASCII
- 7비트 인코딩 방식을 사용하는 문자 인코딩 방식 (또는 Char set) (1비트는 에러 검출용)
- UTF-8의 경우 ASCII와 호환 성을 염두에 둔 영역 설계가 되어 있다.
- ASCII로 작성한 문서는 UTF-8을 적용할 수 있지만, UTF-8로 작성한 문서는 ASCII로는 한정적인 경우에만 확인이 가능할 것
유니코드
- 영문에 최적화되어 있던 ASCII와 달리 전 세계의 모든 문자를 다룰 수 있도록 설계된 산업 표준이다.
UTF-8
- 유니코드를 위한 문자 인코딩 방식(또는 Char set)이며, 한 문자를 나타내기 위해 1 ~ 4바이트를 가변 길이로 사용한다.
- 이 때, 1바이트 영역이 ASCII와 호환된다.
- 때문에 모든 문자를 표현할 수 있지만, 인코딩 된 결과물은 원본보다 더 큰 크기를 가질 수 있다.
참고. DB의 collation
- DB에서 검색 등의 작업을 위해 문자로 저장된 값들을 비교할 때, 정렬할 때 사용하는 규칙의 집합이다.
- CHAR, VARCHAR, TEXT와 같은 데이터 타입의 컬럼에만 적용된다.
- 대소문자를 구별하는 binary 방식과 구별하지 않는 case insensitive(_ci)로 나뉜다.
- mysql의 경우, UTF-8이 3바이트 영역까지만 사용하던 것을 근거로 utf8 char set을 3바이트 기반으로 설계하였다.
- 그러나 emoji 등 신규 추가된 4바이트 문자열에 대응하기 어려운 한계점이 있었고, 이를 대응하기 위해 utf8mb4 char set을 추가하였다고 한다. 또한 호환성 유지를 위해 기존 utf8 시스템을 utf8mb4로로 바꾸어도 값의 손실이 없다고 한다.
- mb는 multi bytes의 약자인 듯 하다.
- 자세한 것은 여기에 잘 나와 있다!
- 그러나 emoji 등 신규 추가된 4바이트 문자열에 대응하기 어려운 한계점이 있었고, 이를 대응하기 위해 utf8mb4 char set을 추가하였다고 한다. 또한 호환성 유지를 위해 기존 utf8 시스템을 utf8mb4로로 바꾸어도 값의 손실이 없다고 한다.
[MySQL/MariaDB] utf8mb4 언어셋 소개 및 표현범위.
기술이 매우 빠르게 발전한다. 배워도 배워도 계속 배워야 한다. 최근에 라엘이가 앞으로 100년동안은 나타나지 않을 것이라고 예상했던, 4 Byte UTF-8 문자열을 보고 여러 깨닳은 바가 있었고
blog.lael.be
'etc.' 카테고리의 다른 글
[D2] D2 설치 및 간단 사용 (0) | 2023.02.04 |
---|---|
[ffmpeg] 명령어 몇가지 (0) | 2022.01.14 |
[용어] 코덱이란? (짧) (0) | 2022.01.11 |
[Nginx] directive is not allowed here in 및 host not found in upstream 오류 (0) | 2021.10.18 |
리버스 프록시, 포워드 프록시 (1) | 2021.06.02 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- RancherDesktop
- postgresql
- Puppeteer
- spring boot
- react
- AWS
- hashicorp
- JEST
- JPA
- 코딩테스트
- eureka
- Spring Cloud Config
- Vault
- jQuery
- Git
- Docker
- Linux
- Node.js
- kotlin
- Gradle
- javascript
- etc
- Database
- terraform
- Java
- shell
- AWS IoT
- mysql
- pgloader
- IntelliJ
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함